|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼的阶段考核第二题答案貌似错了,但我不确定,所以来请教一下。分别贴出我的程序和小甲鱼的程序,还有验证程序
下面是我程序
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- long long int q=600851475143,max=0,i,j;
- int lable=1;
- for(i=2;i<=q;i++)
- {
- for(j=2;j<=(int)sqrt((double)i);j++)
- {
- if(i%j==0)
- {
- lable=0; //lable用来标记是否为质数,1就是质数,0就不是
- break;
- }
-
- }
- if(lable==1)
- {
- if(q%i==0) //如果i为质数且能被q整除,则执行以下程序
- {
- if(i>max)
- {
- max=i;
- printf("%lld\n",max); //输出每一个质因数
- }
- //printf("%lld\n",i);
- q/=i; //除以一个可以整除的质因数,再赋给q
- i=2;
- }
- }
- else
- {
- lable=1;
- }
- }
- printf("最大质因数:%lld\n",max);
- getchar();
- return 0;
- }
复制代码
下面是小甲鱼的程序
- #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", i);
- return 0;
- }
复制代码
下面是用来验证小甲鱼答案的程序
- #include <stdio.h>
- #include <math.h> //这个程序是验证小甲鱼的答案的
- int main()
- {
- long i,t=6857; //将需要验证的数字代入t就可以验证了,6857是我的答案,87625999是小甲鱼的答案
- int j=1;
- for(i=2;i<(int)sqrt((double)t);i++)
- {
- if(t%i==0)
- {
- j=0;
- break;
- }
- }
- if(j==0)
- {
- printf("t不是素数");
- }
- else
- {
- printf("t是素数");
- }
- getchar();
- return 0;
- }
复制代码
,,,,,, ok 给我最佳吧 
|
|