首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个数之间寻找素数

在两个数之间寻找素数
EN

Stack Overflow用户
提问于 2012-05-13 20:49:17
回答 3查看 5K关注 0票数 1

我试图找到两个给定数字之间的所有质数,并将这些质数相加。

我有这个循环,它可以正确地进行质数检测。

然而,由于某些原因,我不知道如何对所有的素数求和。

代码语言:javascript
复制
int a,b,i,j,sum=0;

do
{   cout << "Enter a number: ";
    cin >> a;
    if (a < 4 || a > 1000000) 
    {   cout << "Input must be between 4 and 1000000 inclusive." << endl;
    }
}while (a < 4 || a > 1000000);

do
{   cout << "Enter a second number: ";
    cin >> b;
    if (b < 4 || b > 1000000) 
    {   cout << "Input must be between 4 and 1000000 inclusive." << endl;
    }
}while (b < 4 || b > 1000000);

if (a > b)
{   int hold;
    hold = b;
    b = a;
    a = hold;
}

cout << "The prime numbers between " << a << " and " << b << " inclusive are: " << endl;
//int sum;
for (i = a; i <= b; i++)
{
 for (j = 2; j <= i; j++) // Changed the < to <=, and got rid of semicolon
 {
    if (!(i%j)&&(i!=j)) break;
    if (j==i) 
    {
              cout << i << endl;
              sum += i;
              cout << sum ;

    }
 }
}

变量sum给我的结果很糟糕。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-13 20:53:34

没有确切的细节是不可能知道的,但最有可能的两种可能性是:

在usage

  • 之前,
  1. sum未初始化为0。您遇到了一个overflow,因为数字和太大,无法容纳它。这显然取决于sum的类型和范围。

编辑:

编辑后的代码适用于我,适用于小范围(请注意,对于较大的范围,还应考虑问题#2)。

您可能误读了结果,请尝试在cout << sum ;中添加endl

票数 4
EN

Stack Overflow用户

发布于 2012-05-13 20:52:24

我不确定你是否给了我们所有的信息。否则,对我来说,你似乎没有初始化sum

代码语言:javascript
复制
int sum = 0;
for (i = a; i <= b; i++) {
    for (j = 2; j <= i; j++) {
        if (!(i%j)&&(i!=j)) 
            break;

        if (j==i) { 
            cout << i << endl;
            sum += i;
            cout << sum;
        }
    }

}

票数 1
EN

Stack Overflow用户

发布于 2012-05-13 21:13:00

问题看起来只是你的格式问题。将end循环改为以下内容,输出将更加清晰(注意:在您的代码中,没有声明sum2 -我在上面添加了"int sum2 = 0“)

代码语言:javascript
复制
for (i = a; i <= b; i++)
{
    for (j = 2; j <= i; j++) // Changed the < to <=, and got rid of semicolon
    {
        if (!(i%j) && (i!=j)) break;
        if (j==i) 
        {
            cout << "i = " << i << endl;
            sum += i;
            cout << "sum = " << sum << endl;

        }
        sum2 += sum ;
        //cout << "sum2 = " << sum2 << endl;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10571855

复制
相关文章

相似问题

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