我写了一个代码。目标是找到1000个以内的质数。它编译并运行,但表的末尾似乎是空白的。这是什么原因呢?我该如何修复它?谢谢。
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
int primes[20];
bool prime;
int main()
{
int i;
for(i=2;i<=1000;i++){
prime=true;
int ii;
for (ii=1;ii<=sizeof(primes);ii++){
if (i/ii==floor(i/ii)){
prime=false;
}
}
if (prime==true){
primes[sizeof(primes+1)]=i;
}
}
for (i=1;i<=20;i++){
cout << primes[i] << endl;
system("pause");
}
}发布于 2011-01-19 18:10:20
此比较:
i/ii==floor(i/ii)始终为真,因为您正在进行整数除法。i和ii都是整数,因此C++在计算i/ii时会进行整数除法。
发布于 2011-01-19 18:13:01
不要做整数除法,而是取模,并检查余数是否为0。
发布于 2011-01-19 18:30:56
1)使用vector<int>代替普通数组来为您处理数组分配和大小管理,并且使用稍微不同的语法,您可以实现您想要的内容。
2)测试i/ii==floor(i/ii)不好。使用浮点除法或(更好的)模运算符。
3) if (prime==true) -这是另一个显示缺乏理解的典型结构。
https://stackoverflow.com/questions/4733933
复制相似问题