#include<iostream>
using namespace std;
int main()
{
int N;
cin>>N;
int flag=1;
for(int i=2;i<=N;i++){
for(int j=2;j<i;j++){
if(i%j==0){flag=0;break;}
break;
}
if(flag==1){cout<<i<<" ";}
}
return 0;
}
程序将打印质数直至输入数字N(带空格) 例如-N = 9,我的o / p -2 3, 预期o / p-2 3 5 7 帮助
答案 0 :(得分:0)
每次迭代后仅初始标志= 1
FileSystem.DeleteFile(path_of_the_file,
Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin,
Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException);
答案 1 :(得分:0)
您至少有两个问题:
flag
重置为1
。因此,一旦找到非素数,一切都是非素数。您希望每次在外循环中将其设置回1
。j
只是2
以外的任何内容),因此您实际上是在测试“是奇数”而不是“是素数”。只有break
如果您确认它不是素数。解决此问题,代码将起作用:
#include<iostream>
using namespace std;
int main() {
int N;
cin>>N;
for(int i=2;i<=N;i++){
int flag=1; // Set each loop
for(int j=2;j<i;j++){
if(i%j==0){
flag=0;
break; // Only break when confirmed composite
}
// no break otherwise
}
if(flag==1){
cout<<i<<" ";
}
}
return 0;
}