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不输出该值? 展开
我执行了却得到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不输出该值? 展开
1个回答
展开全部
#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;
}
欢迎提问交流哈、
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询