本文目錄一覽:
c語言編程:合數分解
#include stdio.h
int main()
{
int i=2,n,m=0;
scanf(“%d”,n);
while(i=n)
{
if(n%i==0)
{m++;n/=i;}
else
{
if(m1) printf(“%d “,i);
m=0;i++;
}
}
return 0;
}
//運行示例:
c++/c語言因式分解
【解題思路】
對一個數進行因式分解,可以採用遞歸的辦法,先找出這個數最小的因式,然後再把這個數除以因式,繼續找,直到除到這個數成為質數為止。比如要對60進行因式分解,可以先找到60的最小因式2;然後再把60除以2得到30,接著找30的最小因式得到2;再把30除以2得到15,接著找15的最小因式3;然後再把15除以3得到5;然後5是質數,無法再分解,最終就得到60的因式共有4個,分別是2,2,3,5。而判斷一個數b是不是另一個數a的因式必須符合兩個標準,一是a必須能被b整除;二是b必須是質數。根據以上思路,代碼如下:(為了簡化程序,這裡把判斷是否質數和分解因式都分別做成一個獨立的函數)
【程序代碼】
#include iostream //控制台操作頭文件
#include math.h //數學函數頭文件
//—————
bool SS(int a) //質數判斷函數(質數返回1,否則0)
{if(a2) return false; //小於2的數都不是質數,返回0
if(a==2) return true; //2是特殊的質數
int i,n=(int)sqrt(a); //n是除數,開方可以減少檢測個數
for(i=2;i=n;i++) //逐個檢測能不能被整除
if(a%i==0) return false; //如果能被整除說明不是質數, 返回0; return true;} //檢測完了還沒可以被整除的數,返回1
//—————
void Ys(int s[],int a) //因式分解的遞歸函數
/*s是存放各個因式的數組,其中s[0]為因式個數,a是要分解因素的數字*/
{int i,n; //循環變數和因式個數
n=++s[0]; //每遞歸調用一次因式個數增加1
if(SS(a)) {s[n]=a; return ;} //如果a是質數,沒有因式,函數結束
for(i=2;ia;i++) //由小到大找出a的第一個因式
if(SS(i)a%i==0) break; //如果i是質數並且a可以被i整除
s[n]=i; //保存這個因式
Ys(s,a/i);} //遞歸調用函數繼續分解下個因式
//—————
int main() //主函數
{int a,i; //整型變數
int S[100]; //用於存放因式的數組
for(;;) //弄一個無窮循環
{printf(“請輸入一個正整數(-1結束):”); //顯示提示信息
scanf(“%d”,a); //從鍵盤輸入一個整數
if(a==-1) break; //如果輸入-1退出循環
if(a0) continue; //如果輸入不是正數重新輸入
S[0]=0; //因式個數清零
Ys(S,a); //調用函數分解因式
printf(“%d共有%d個因式,分別是:”,a,S[0]);//顯示因式個數
for(i=1;i=S[0];i++) printf(“%d “,S[i]);//顯示各個因式
printf(“\n\n”);} //顯示完所有因式換行
printf(“\n”); //結束程序前再空一行
system(“PAUSE”); //屏幕暫停查看顯示結果
return 0;} //結束程序
【運行結果】
以上程序在DEV C++上運行通過。
截圖如下:
用c語言編寫一個分解質因數的程序
#include stdio.h
void main( )
{
int data, i = 2;
scanf(“%d”, data);
while(data 1)
{
if(data % i == 0)
{
printf(“%d “, i);
data /= i;
}
else i++;
}
}
C語言將一個4位數拆分成4個個位數
1、首先在電腦桌面上打開vc++軟體。
2、在C++頁面新建一個c文件。
3、定一個int型變數,然後進行初始化。
4、假設他是一個四位數,然後進行第一步分解,使用”a/1000″來獲得千位數字。
5、然後通過”a/100%10″的方法獲得百位。
6、通過”a/10%10″的方法得到十位。
7、通過”a%10″的方法獲得個位。
8、最後得到分解結果。
c語言程序編程(分解質因數)
#include stdio.h
int isPrime(int a)
{
int temp = a;
for(int i = a/2;i=2;i–)
{
if(!(temp%i))
return 0;
}
return 1;
}
int main()
{
int a,i=0,flag = 1,t=2;;
printf(“請輸入你要分解的數: “);
scanf(“%d”,a);
printf(“%d=”,a);
while(a!=1)
{
while(isPrime(t))
{
if(a%t==0)
{
printf(“%d”,t);
a /= t;
if(a!=1)
printf(“*”);
}
else
t++;
}
t++;
}
getchar();
return 0;
}
自己去看,沒有寫注釋,其實簡單
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246010.html