C语言,求一个整数的所有质因子。。谢谢大神,我是C语言小白。。

2024-12-26 10:03:27
推荐回答(4个)
回答1:

测试结果:

请输入一个数N,N的所有质数因子:
520
2 5 13

源代码:
#include "stdio.h"
#include "conio.h"
int isShuShu(int n)
{
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
main()
{
int i;
int n=0;
printf("请输入一个数N,N的所有质数因子:\n");
scanf("%d",&n);
for(i=2;i<=n/2;i++)
{
if(n%i==0&&isShuShu(i))
{
printf("%3d ",i);
}
}
getch();
}

思路:
一个函数isShuSHU()用来判断给定 的数是否是素数
从1到n的一般,一个一个排查,看那些数能整除N,且是素数。输出即可

回答2:

如一个数n
那么他的因子是在sqrt(n)两边一边一半的,所以求出一半,在根据这个数求出剩下的一半就好了,为了节约计算时间,可以这么办
要是不计效率的话,历遍1~n就可以

main()
{
int n,a[100],i,j=0,t;
scanf("%d",&n);
for(i=1;i*i<=n;i++)
if(n%i==0)
a[++j]=i;
t=j

for(i=t-1;i>=0;i--)
a[++j]=n/a[i];
for(i=0;i printf("%d ",a[i]);

}

回答3:

#include"stdio.h"
int main()
{
int i, n;
printf("请输入一个数\n");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
if(n%i==0)
printf("%d",i);
}
return 0;
}

回答4:

#include
int main(int argc, char *argv[])
{
unsigned int n,f,;
while(scanf("%d",&n) != EOF)
{
if(n==0 || n==1)
printf("%d 没有质因子。\n");
else
{
f=2;
while(n!=1)
{
if(n%f == 0)
{
printf("%d ",f);
while(n%f == 0) n/=f;
}
f++;
}
printf("\n");
}
}
return 0;
}