整數分解c語言
1. c語言 求整數位分解
#include<stdio.h>
voidsplit(inta){
//輸出百位
printf("%d",a/100);
printf("");
//輸出十位
printf("%d",(a%100)/10);
printf("");
//輸出個位
printf("%d",a%10);
}
intmain(){
inta;
scanf("%d",&a);
//判斷輸入數字的合法性。
if(a<100||a>999){
printf("errornumber!");
return0;
}
//數字分割
split(a);
return0;
}
2. c語言整數質分解
/*
先把數質分解,再放入數組,例如:360=2*2*2*3*3*5,則A[3]={2,3,5}
*/
#include <stdio.h>
#define MAX 32
// 求最大公約數
int maxCommonDivisor(int Num)
{
int divisor = Num;
int i;
for (i=Num/2; i>1; i--)
{
if (Num % i == 0)
{
divisor = i;
break;
}
}
return divisor;
}
int main()
{
int number = 360;
int resial = number;
int tmp;
int Buf[MAX];
int A[MAX];
int B[MAX];
int len = 0;
int i, j, k;
// 通過求最大公約數,間接得依次存放最小公約數
while (resial != (tmp = maxCommonDivisor(resial)))
{
Buf[len++] = resial / tmp;
resial = tmp;
}
Buf[len++] = tmp;
printf("%d = %d", number, Buf[0]);
for (i=1; i<len; i++)
printf(" * %d", Buf[i]);
// 將篩選後的數存放入數組A
A[0] = Buf[0];
B[0] = 1;
for (i=1,j=0,k=0; i<len; i++)
{
if (A[j] != Buf[i])
{
A[++j] = Buf[i];
B[j] = 1;
}
else
B[j]++;
}
printf(" A[%d] = { %d", j+1, A[0]);
for (i=1; i<=j; i++)
printf(", %d", A[i]);
printf(" } ");
printf("B[%d] = { %d", j+1, B[0]);
for (i=1; i<=j; i++)
printf(", %d", B[i]);
printf(" } ");
return 0;
}
3. C語言編程 將一個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5
聲明一int型變數n接收鍵盤輸入並限制為正數。另一int型變數i初值賦2,用i去除n,能被整除則輸出i為質因數,並將n賦值為n/i;不能整除則i增1再去除n的新值……如此反復至n==1為止。輸出時,在n==1之前增印一個*號表示「乘」。代碼如下:
#include"stdio.h"
intmain(intargc,char*argv[]){
intn,i;
printf("Inputn(intn>0)... n=");
if(scanf("%d",&n)!=1||n<1){//輸入並限制大於0
printf("Inputerror,exit... ");
return0;
}
printf(" %d=",n);
for(i=2;n>1;){//分解質因數,i從2開始
if(n%i==0){//能被i整除則輸出因數i
printf("%d",i);
if((n/=i)>1)//未到最後一個因數則輸出一個*號
printf("*");
}
else//不能被i整除則i增1
i++;
}
printf(" ");
return0;
}
運行樣例如下:
4. 怎麼用C語言將一個正整數分解質因數.例如,輸入90,輸出90=2*3*3*5
#include "stdio.h"
void main()
{int m,i,j=0;
printf("please input the number:\n");
scanf("%d",&m);
for(i=2;i<=m;i++)
{while(m%i==0)
{j++;
if(j==1) printf("%d=%d",m,i);
else printf("*%d",i);
m=m/i;
}
}
}
沒有用中文,怕你用的是TC,那就會出現亂碼,這程序關鍵在於尋找質因數和輸出格式的控制。
5. c語言,輸入一個正整數,將這個正整數分解質因數
具體如下:
#include<stdio.h>
void main()
{int i,n;
printf("input the n:");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<n;)
{if(n%i==0)
{printf("%d*",i);
n=n/i;}
else i++;
}printf("%d",n);
}
6. 如何用C語言拆分整數
將一個整數的各個位分離出來的最簡單方法就是模10,取個位數,直到該變為0。
參考代碼:
#include <stdio.h>
void main()
{
int n=0;
scanf("%d", &n );
do {
printf("%d\n", n%10 ); //每次輸出個位
n/=10 ; //縮小10倍,去除原來的個位。
}while(n);
}
但這整拆分的特點是從後向前輸出每一位數。
如果僅是為了輸出,還想正向輸出每一位數,則可用遞歸函數來解決。(也可以實現逆向輸出)
參考代碼:
#include <stdio.h>
void split_int( int n )
{
if ( n>0 )
{
//printf("%d\n", n%10 );//逆向輸出,放開這里,關閉下面的printf().即:先輸出當前個位,再去高位的數
split_int( n/10 );//先去輸出高位的數
printf("%d\n", n%10 ); //再輸出當前的個位數
}
}
void main()
{
int n;
scanf("%d", &n);
split_int(n);
}
如果想把分離開的數據存儲到數組中,則最簡單的方法是將整數用sprintf()存儲到字元數組中,然後,遍歷數組,逐位取出。
參考代碼:
#include <stdio.h>
void main()
{
int n,i;
char str[20];
scanf("%d", &n);
sprintf(str,"%d", n);
for( i=0;str[i];i++ ) //正向輸出
printf("%c\n", str[i] );
for( i--;i>=0;i-- ) //逆向輸出
printf("%c\n", str[i] );
}
7. c語言將一個正整數分解質因數,望高手幫我詳細解釋一下程序
1、首先打開vc6.0, 新建一個vc項目,添加頭文件。