高级天翼
1106 素数经验值:0
题目描述 Description
期中考试刚刚结束,聪聪是班上的学习委员,可是这次数学成绩班上好多同学都考了满分,聪聪只考了 98 分,就错在一道求素数的题目上,题目是这样的:已知 N 和 M 两个正整数,求 N 至 M 之间(包括 N 和M)有多少个素数。聪聪觉得很懊恼,他决定必须研究清楚这个问题。由于聪聪今年刚加入学校的计算机兴趣班,于是他决定利用编程来解决这个问题,你能帮助他吗?
输入描述 Input Description
输入文件共一行:两个正整数 N 和 M,中间以一个空格隔开。
输出描述 Output Description
输出文件一个正整数:表示 N 至 M 之间(包括 N 和 M)的素数个数。
样例输入 Sample Input
3 7
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
【数据说明】
1≤N<M≤32767。
#include<iostream>
#include<cmath>
using namespace std;
int a[1000000];
int main()
{
int n,m;
cin>>n>>m;
for(int i=2;i<=n;i++)
{
if(a[i]==0)
{
for(int j=i*2;j<=n;j+=i)
{
a[j]=1;
}
}
}
int cnt=0;
for(int i=1;i<=n;i++)
{
if(a[i]==0)
{
cnt++;
}
}
cout<<cnt;
return 0;
}
错误代码如上
——————————————————————————————————————
给大家看一张图:
What??,自己采纳自己是什么神操作??
再送大家一个送分题(但也有可能是送命题)
这也......太......太________。(请在此处填空)
张恩泽在2020-07-29 22:49:59追加了内容
这又是什么鬼,不是提问了44个问题吗??
初级天翼
我不水了,我来回答你的问题:这题用函数它不香吗???
你非要用什么埃氏筛之类的干嘛(或者你们老师让你们用的),埃氏筛的我就不说,比较麻烦,我来说函数做法:
先写函数,判断素数
然后主循环内循环i:n~m
找素数,cnt ++
输出cnt,结束
但要切记,有特判条件的!!!例如n==1, m==1,你要输出0,还有循环里if的判断不仅仅是要素数判断,还要不等于1才行,continue就行了,具体代码如下:
函数部分:
主循环循环内部:
特判: