《带你学c带你飞》的阶段考核题目
#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;
}
答案里面这三句代码是什么意思,为什么for循环里面有flag
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)
#include <stdio.h>
#include <math.h>
int main()
{
long long i, j, k, l, num = 600851475143;
_Bool flag = 1;
j = num/i;
for (i = 2; flag != 0; i++)
{
if (i * j == num)
{
k = sqrt((double)j);
for (l = 2; l <= k; l++)
{
if (j % l == 0)
{
flag = 0;
break;
}
}
if (flag)
{
break;
}
}
j = num/i;
flag = 1;
}
printf("%lld\n", i);
return 0;
}
这样能否看得懂?这样的代码不得不说不利于新手阅读,就算是老手代码一多也不方便阅读
ba21 发表于 2019-11-24 22:02
#include
#include
这样的话,num=20出来的是2。。 i++ 也放到下面。。而且顺序要一样。。
页:
[1]