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

#include<iostream>#include<cmath>#include<iomanip>usingnamespacestd;intmain(){inti,p=... #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不输出该值?
展开
 我来答
军天下wolfer
2013-10-21 · TA获得超过2081个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:944万
展开全部
#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;
}

 欢迎提问交流哈、

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式