|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- long long i, j, k, l, num = 600851475143;
- _Bool flag = 1;
- for (i = 2, j = num/i; flag != 0; i++, j = num/i, flag = 1)
- {
- if (i * j == num)//这有什么作用啊
- {
- k = sqrt((double)j);
- for (l = 2; l <= k; l++)
- {
- if (j % l == 0)
- {
- flag = 0;
- break;
- }
- }
- if (flag)
- {
- break;
- }
- }
- }
- printf("%lld\n", j);
- return 0;
- }
复制代码
问题1.这个if(i*j==num)有什么作用啊?? 怎么感觉是多余的
问题2.我用的code block该如何执行小甲鱼说的操作
小甲鱼说的 ”另外由于数字比较大,需要 long long 以上整型才能存储,而 long long 是 C99 新增加的类型,所以在编译的时候应该加上 -std=c99,即告诉 GCC 使用 C99 标准进行编译。另外 math.h 头文件需要加上 -lm 才能正常编译”
- gcc -std=c99 -lm test.c && ./a.out
复制代码
麻烦各位大手子啦
这一句的意思是,如果 i 和 j 是 num 的因子,就进入 if 语句块,进一步判断 j 是否是一个质数。
|
|