一直沒有找到一個易懂的方法,誰能提供一種C語言方法啊
uj5u.com熱心網友回復:
這類動手題,最好自己寫。有問題再問,效果比較好。Show一個,僅供參考:
#include <stdio.h>
void func(int n)
{
int i, j, flag;
for(i = 2; i <= n; i++)
{
flag = 1;
for(j = 2; j <= i / 2; j++)
{
if(n % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1 && n % i == 0)
{
printf("%d\t", i);
func(n / i);
break;
}
}
}
int main(void)
{
int n;
scanf("%d", &n);
func(n);
printf("\n");
return 0;
}
uj5u.com熱心網友回復:
for exampleint isPrimeNum(int num) { //判斷是否是質數,是回傳1,不是回傳0
int i;
if (num<2) return 0;
else if (num==2) return 1;
else if (num%2==0) return 0;
for(i=3; i<=num/2; i++) {
if (num%i==0) return 0;
}
return 1;
}
int main( )
{
int n, i;
scanf("%d", &n);
if (n<2) return 1;
if (isPrimeNum(n)) { //
printf("%d本身是質數,沒有質因子。", n);
return 0;
}
while (!isPrimeNum(n)) { //如果不是質數則一直回圈
for(i=2;;i++) {
if (n%i==0) {
printf("%d ", i);
n /= i;
break;
}
}
}
printf("%d", n);
return 0;
}轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/235818.html
標籤:C語言
下一篇:求大佬幫忙
