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

时间:2019-04-09 10:18:25

标签: c++

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

我尝试将代码写在下面:

checkAndRequestPermissions()

我的预期结果应该是

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

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

4 个答案:

答案 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;
}

答案 1 :(得分:3)

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

您需要将其更改为:-

  

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

答案 2 :(得分: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)

另外,我们可以使它更短一些:如果一个数字可以被4和6整除,如果可以被12整除,那么您的支票可能看起来像这样:

if(i % 12 == 0)

答案 3 :(得分:0)

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

#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;
}