永发信息网

C++新手 找1000到2000所有的质数!

答案:1  悬赏:10  手机版
解决时间 2021-03-21 09:10
  • 提问者网友:愿为果
  • 2021-03-20 23:51
#include <iostream>#include <cmath>#include <iomanip>using namespace std;int main(){int i,p=3,n;bool o=true;for (i=1001;i<=2000;i+=2){ for (p=3;p<=int(sqrt(i));p++) { if (i%p==0) {break;o=false;} } if (o) {cout<<setw(5)<<i; return 0;}
我执行了却得到1001到1999所有的奇数。
我没弄清楚这些问题:
比如:
当1001/3时,不能整除,那么是继续p++还是会先执行if(O)后面的语句(因为不能整除,此时o=true的)再p++,这是不是和第二个for循环后面的括号有关?我上面没把if(O)括起来是不是就直接继续p++啊?
当出现一个余数为0的情况,是不是第二个for循环针对本次的i值的循环结束?之后是执行if(o)即不输出任何值然后再i+2又循环?
当出现一个质数时,第二个FOR循环针对这个质数的循环结束后,是执行if(o)即输出该i值再i+2再循环?还是直接i+2不输出该值?
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-03-21 00:07
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main(){
int i,p=3,n;
bool o=true;
for (i=1001;i<=2000;i+=2){  
o=true;//对每个数都初始化成true
for (p=3;p<=int(sqrt(i));p++) { 
if (i%p==0) {
o=false;//先把o设置成false再break
break;

}

if (o) 
cout<<setw(5)<<i;
}
return 0;
} 欢迎提问交流哈、
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯