首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >质数生成器有什么问题?

质数生成器有什么问题?
EN

Stack Overflow用户
提问于 2011-01-19 18:06:02
回答 4查看 390关注 0票数 0

我写了一个代码。目标是找到1000个以内的质数。它编译并运行,但表的末尾似乎是空白的。这是什么原因呢?我该如何修复它?谢谢。

代码语言:javascript
复制
#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");
}
}
EN

回答 4

Stack Overflow用户

发布于 2011-01-19 18:10:20

此比较:

代码语言:javascript
复制
i/ii==floor(i/ii)

始终为真,因为您正在进行整数除法。iii都是整数,因此C++在计算i/ii时会进行整数除法。

票数 0
EN

Stack Overflow用户

发布于 2011-01-19 18:13:01

不要做整数除法,而是取模,并检查余数是否为0。

票数 0
EN

Stack Overflow用户

发布于 2011-01-19 18:30:56

1)使用vector<int>代替普通数组来为您处理数组分配和大小管理,并且使用稍微不同的语法,您可以实现您想要的内容。

2)测试i/ii==floor(i/ii)不好。使用浮点除法或(更好的)模运算符。

3) if (prime==true) -这是另一个显示缺乏理解的典型结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4733933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档