在第一个和第二个数字之间可以被4和6整除的所有整数的总和

问题描述 投票:0回答:4

我需要编写一个可以获得2个整数的程序。然后程序将显示两个数字之间可被4和6整除的所有整数的总和

我尝试在下面执行代码:

#include <iostream>
using namespace std;

int main()
{
    int num1, num2, sum=0;

    cout << "Input first number : ";
    cin >> num1;
    cout << "Input second number : ";
    cin >> num2;


    for(int i = num1 + 1;i<num2;i++)
    {
        if ( num1 % 4 == 0 && num2 % 6 == 0)
        {
            sum = sum + i;
        }
    }
    cout<< "The sum of all integers that are both divisible by 4 and 6 between " << num1 << " and " << num2 << " is " << sum << endl;
    system("pause");
    return 0;
}

我的预期结果应该是

输入第一个数字:4 输入第二个数字:12 在4和12之间可以被4和6整除的所有整数的总和是12“,因为12是唯一可以被4和6整除的数字”

但实际结果是 输入第一个数字:4 输入第二个数字:12 在4和12之间可被4和6整除的所有整数的总和为56

c++
4个回答
1
投票

有两个问题:

首先,当用作边界的4和12将产生12而不是0时,您还需要在循环中包含边界:

for(int i = num1; i <= num2; i++)
//                   ^ (!)
//             ^ - 1 dropped

那你选择加数的条件是不正确的:

if(num1 % 4 == 0 && num2 % 6 == 0)

请注意,num1 == 4num2 == 12总是如此,所以你要总结两者之间的所有数字......你真正想要的是检查在这两个边界之间运行的变量,即i

if(i % 4 == 0 && i % 6 == 0) // i will be 4, 5, ... , 11, 12 (with above fixed loop)

另外,我们可以让它更短一些:如果它可以被12整除,则数字可以被4和6整除。所以你的检查可能看起来像:

if(i % 12 == 0)

4
投票

这是正确的程序:

#include <iostream>
using namespace std;

int main()
{
    int num1, num2, sum=0;

    cout << "Input first number : ";
    cin >> num1;
    cout << "Input second number : ";
    cin >> num2;


    for(int i = num1;i<=num2;i++) // if you want to include num1 and num2
    //for(int i = num1+1;i<num2;i++) // if you do not want to include num1 and num2
    {
        if ( i % 4 == 0 && i % 6 == 0)
        {
            sum = sum + i;

        }
    }
    cout<< "The sum of all integers that are both divisible by 4 and 6 between " << num1 << " and " << num2 << " is " << sum << endl;
    system("pause");
    return 0;
}

3
投票

if(num1%4 == 0 && num2%6 == 0)中的条件是错误的。

您需要将其更改为: -

(i%4 == 0 && i%6 == 0)


0
投票

如上所述,您只需要检查12的可分性,并且您需要使用i作为条件中的检查。我的系统没有pause(),所以你可以使用另一个cin >> call来创建暂停。当然,那么你必须提供一个字母/数字输入。空间不足。

#include <iostream>
using namespace std;

int main()
{
  int num1, num2, sum=0;
  int wait_var;

  cout << "Input first number : ";
  cin >> num1;
  cout << "Input second number : ";
  cin >> num2;


  for(int i = num1 + 1;i<num2;i++) // bounds are correct
  {
    if ( i % 12 == 0) // check for divisibility by 12 of i, not of the num1 and num2
    {
      sum = sum + i;
    }
  }
  cout<< "The sum of all integers that are both divisible by 4 and 6 between " << num1 << " and " << num2 << " is " << sum << endl;
  cin >> wait_var;
  return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.