|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <bits/stdc++.h>
- int main(){
- long long int num = 600851475143;
- long long int a,b,c,d;
- bool Bo = 1;
-
- for(a=2,b=num/2;Bo != 0;a++,b=num/a,Bo=1){
- if(a * b == num)
- {
- c=sqrt((double)b);
- for(d=2;d<=c;d++)
- {
- if(b % d == 0)
- {
- Bo = 0;
- break;
- }
- }
- if(Bo)
- {
- break;
- }
- }
- }
-
- printf("最大的素数是%lld\n",a);
-
- return 0;
- }
复制代码
各位大佬 这是我在参考小甲鱼的标准答案后自己写的答案,但是我对于第一个for循环的意思和其中的Bo=1的这句代码的含义不太了解 也不是很明白为什么要用这样的方式来解,希望有大佬能帮忙注释一下 感谢感谢!!!
主要是 - for(a=2,b=num/2;Bo != 0;a++,b=num/a,Bo=1)
复制代码
这个条件东西挤在一起,很不直观,让你有一种错觉
或许改成这样子会更好看一点
- a=2;
- b=num/2;
- for(;Bo != 0;a++){
- b=num/a;
- Bo=1;
- if(a * b == num)
- {
- c=sqrt((double)b);
- for(d=2;d<=c;d++)
- {
- if(b % d == 0)
- {
- Bo = 0;
- break;
- }
- }
- if(Bo)
- {
- break;
- }
- }
- }
-
- printf("最大的素数是%lld\n",a);
-
- return 0;
- }
复制代码
那么这个代码的意思是
我全部执行完,跳出最大的for循环,你还需要bo=1吗?不需要了
|
|