
include
"stdio.h"
int
isPrime(int
a)
{
/*判断a是否是
,是质数返回1,仿镇不是质数返回0*/
int
i
for(i=2i<=a-1i++)
if(a
%
i
==
0)
return
0
/*不是质数*/
return
1
/*是质数*/
}
void
PrimeFactor(int
n)
{
/*对参数n分解
质因饥大肆数
*/
int
i
if(isPrime(n))
printf("%d
",n)
else
{
for(i=2i<=n-1i++)
if(n
%
i
==
0)
{
printf("%d
",i)
/*第一个因数一定是质因数*/
if(isPrime(n/i))
{
/*判断第二个因数是否是质数*/
printf("%d
",n/i)
break
/*找烂轿到全部
质因子
*/
}
else
PrimeFactor(n/i)
/*递归地调用PrimeFactor
分解n/i
*/
break
}
}
}
main()
{
int
n
printf("Please
input
a
integer
for
getting
Prime
factor\n")
scanf("%d",&n)
PrimeFactor(n)
/*对n
分解质因数
*/
getche()
}
题目有些难度,我先简单提醒下你,一会把梁改完善答案再代码写出来①发现因子是逐渐减小的
②举例30=5*3*2,30%5==0,应该明白左边这盯含个式子吧!30能被5整除,另外30/5等于6,而
6%3==0,6/3等于2,2%2==0,2/2等于1,也就是说用取余使得余数(假设为a)为0,然后
原数n运算n/=a,凯渣笑然后再取余知道n/=a之后n==0则退出循环
说的不是很明白,一会儿看代码吧,马上写出来
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)