马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:13195 的质数因子有 5, 7, 13 和 29。
600851475143 的最大质数因子是多少?
#include <stdio.h>
void main()
{
unsigned long long int n,i;
printf("\nplease input a number:\n");
scanf("%llu",&n);
printf("%llu=",n);
for(i=2;i<=n;i++)/*从小数除起可以确保该数为质数所以不必判断是否为质数*/
while(n!=i)/*如果除数不等于被除数就判断能否整除*/
{
if(n%i==0)/*如果可以整除就将除数输出并被除数 = 商*/
{
printf("%llu*",i);
n=n/i;
}
else
break;/*如果除数等于被除数说明已经是最后一个质因数结束循环将其输出*/
}
printf("%llu",n);
}
论坛翻到的那个for后面的注释什么鬼;
看不太懂
因为所有的 合数都是多个质数的乘积。
从最小的数 2 开始除,一旦不能被2整除,那肯定不能被2的倍数整除,其他质数也是如此。
例如:输入n=180,最开始连续除2,当不能被2整除时,n=45,
然后i++,i=3,连续除3,当不能被3整除时,n=5,
然后i++,i=4,此时早就连续除2了,肯定不能被4整除,直接就过去了
然后i++,……
|