#include <iostream>
using namespace std;
int main ()
{
int count = 0;
for (int x=2; x < 100; x++)
for (int y=2; y < x; y++)
{
if (x % y == 0)
break;
else if (x == y + 1)
count++;
cout << x << " ";
cout << count;
system("pause")
return 0;
}
我想打印素数,并打印出2到100之间的素数。这应该是24.相反,我得到了大量的素数,然后是24号。我确定这是一个逻辑错误,只是没有抓住它。
答案 0 :(得分:0)
首先,存在语法错误。
其次,除非你知道自己在做什么,否则总是使用if/else
大括号 - 这是一个错误。
第三,使用system()
需要#include <cstdlib>
。如果你不允许(g++
没有),你的编译器就会松懈。
第四,pause
不是独立程序,而是内置cmd.exe
,因此system()
可能会失败,具体取决于所使用的编译器/环境。更简洁的方式是C++ keypress: getch, cin.get?。
最后,您的算法非常不理想。例如。 y
只需要升级到x/2+1
,并且存储已在数组/列表中找到的素数并仅尝试它们是合理的。