OR72. 求素数
描述
输入M、N,1 < M < N < 1000000,求区间[M,N]内的所有素数的个数。素数定义:除了1以外,只能被1和自己整除的自然数称为素数输入描述
两个整数M,N输出描述
区间内素数的个数示例1
输入:
2 10
输出:
4
C++ 解法, 执行用时: 4ms, 内存消耗: 1272KB, 提交时间: 2020-10-31
#include <iostream> #include <cstring> using namespace std; #define N 1000001 bool table[N]; int main(){ memset(table,true,sizeof(table)); table[0]=table[1]=false; for(int i=4;i<=N;i+=2) table[i]=false; for(int i=3;i*i<=N;i+=2){ if(table[i]){ for(int j=i*i;j<=N;j+=2*i){ table[j]=false; } } } int m,n; cin>>m>>n; int cnt=0; for(int i=m;i<=n;i++){ if(table[i]) cnt++; } cout<<cnt<<endl; return 0; }
C++ 解法, 执行用时: 4ms, 内存消耗: 1272KB, 提交时间: 2020-10-31
#include <iostream> #include <cstring> using namespace std; #define N 1000001 bool table[N]; int main(){ memset(table,true,sizeof(table)); table[0]=table[1]=false; for(int i=4;i<=N;i+=2) table[i]=false; for(int i=3;i*i<=N;i+=2){ if(table[i]){ for(int j=i*i;j<=N;j+=2*i){ table[j]=false; } } } int m,n; cin>>m>>n; int cnt=0; for(int i=m;i<=n;i++){ if(table[i]) cnt++; } cout<<cnt<<endl; return 0; }