首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++质数没有给出正确答案

C++质数没有给出正确答案
EN

Stack Overflow用户
提问于 2014-01-12 04:41:27
回答 1查看 70关注 0票数 0
代码语言:javascript
复制
#include <iostream>
#include <cmath>

using namespace std;
bool prime(int n);

int main()
{
    double i;

    while (true)
    {
        cout << "Enter a number that isn't 0: ";
        cin >> i;
            if ( i == 0)
                break;
            if(prime(i))
                cout << i << " is prime" << endl;
            else
                cout << i << " is not prime." << endl;
    }
    system ("Pause");
    return 0;
}

bool prime (int n)
{
    int i;
    double sqrt_of_n = sqrt(double (n));
    for (i = 2; i <= sqrt_of_n; i++)
        {
            if (int(n) % 1 == 0)
            return false;
        }
    return true;
}

每次我运行程序,如果我输入7,我得到的结果是7不是质数。有人能帮我找出我哪里搞砸了吗?

对于i和n,我已经尝试在double和int之间切换。

如果我输入3,它会显示质数。

问题是它将一些质数显示为非质数。

EN

回答 1

Stack Overflow用户

发布于 2014-01-12 04:43:05

您的for循环的主体根本不使用i

特别是,对于任何整数nn % 1始终为零。

您可能想知道n是否可以被i整除,但是意外地检查了n是否可以被1整除。

通过在调试器中单步执行,并将各种子表达式转换为“监视表达式”,您可以很容易地发现这个错误。

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

https://stackoverflow.com/questions/21067616

复制
相关文章

相似问题

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