你可以给我一些帮助吗?我是初学者,我不知道我的程序有什么问题。它生成了所有数字,而不仅仅是素数。为什么呢?
#include <iostream>
using namespace std;
int main()
{
unsigned int i,n,d;
bool prim;
cout<<"n=";
cin>>n;
for(i=2;i<=n;i=i+1)
{
prim=true;
for(d=2;d<=i/2;d=d+1)
if(i%d==0)
{
prim=false;
break;
}
(prim);
cout<<i<<",";
}
return 0;
}
答案 0 :(得分:1)
因为(prim)
与以下内容不同:
if (prim) {
cout << i << ",";
}
旁注:
d=d+1
和i=i+1
可以是d++
和i++
for (int i = 0;
答案 1 :(得分:0)
您的打印条件不正确。
(prim);cout<<i<<",";
应该是
if(prim) cout<<i<<",";
请注意,您的逻辑打印素数&lt; = n,而不是第一个n
素数。
答案 2 :(得分:0)
你错过了if
:
if (prim) cout << i << ',';
答案 3 :(得分:0)
而不是(prim);
使用if(prim)
。其余代码是正确的。
#include <iostream>
using namespace std;
int main()
{
unsigned int i,n,d;
bool prim;
cout<<"n=";
cin>>n;
for(i=2;i<=n;i=i+1)
{
prim=true;
for(d=2;d<=i/2;d=d+1)
if(i%d==0)
{
prim=false;
break;
}
if(prim)
cout<<i<<", ";
}
return 0;
}
答案 4 :(得分:0)
if
语句可以减少一点:
prim && cout<<i<<",";
这是因为逻辑表达式的快捷方式评估。所以cout
只有在素数为真时才会被评估。如果为false,则不会评估cout
,因为表达式无论如何都是假的。
次要评论:除数(d)可以增加到楼层(sqr(i)),而不是直到i / 2(更有效)。变量i可以从3开始并且增加2,因为所有偶数都不是素数(除了2,它可以打印而不计算......)。