0
1
已采纳
栾峻岩
初级天翼
初级天翼
总体思路是没有问题的。
就是在第二重循环
for(int j=2;j<i;j++)
可以优化一下,改成:
for (int j=2;j<=sqrt(i);j++)
//sqrt函数需要加上 #include <cmath> 头文件。
证明:因数和倍数(五年级下会学,六年级及以上的同学们应该会吧)。
if(i%j==0)f=1;
可以改一下:
if(i%j==0)
{
f=1;
break;
}
因为一个数有了一个大于2且不为n的因数,这个数一定不是因数,就不用再往后找了。
算法时间复杂度:O(Msqrt(M)) 不会超时。
0
许天奕
新手守护
新手守护
Q1:
if(n==1)n=2;
Q2:
for(int j=2;j<=sqrt(i);j++)
Q3:
if(i%j==0){
f=1;
break;
}
改一下就OK啦!!!
求采纳
0
0
0
0
0
0
0
0