题解 | #筛选法求素数#
筛选法求素数
https://www.nowcoder.com/practice/06c3dcc303654ef4926654023eca1e5a
#include <iostream> using namespace std; int main() { int a; while (cin >> a) { // 注意 while 处理多个 case int m[101]={0}; for(int i=2;i<=a;i++) { m[i]=i; } for(int i=2;i<=a;i++) { for(int j=(i+1);j<=a;j++) { //如果m[i]已经是0了,那么拿来做1%0会导致超时等问题。 if(m[i]!=0 && j%m[i]==0) { m[j]=0; } } } int cnt=0; for(int i=2;i<=a;i++) { if(m[i]!=0) { cout<<m[i]<<" "; cnt++; } } cout<<endl; cout<<a-cnt-1; } } // 64 位输出请用 printf("%lld")
注意对于取余的那个后面的数字不能是0,记得加个判断