|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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++,……
|
|