项目欧拉#1:替代算法

时间:2014-09-16 00:06:54

标签: c algorithm

我是一名初学程序员,为了练习我的技能,我决定研究一些Project Euler问题。我确实意识到很多人都对第一个Project Euler问题提出了问题,但这个问题相当独特。我首先使用通用模数算法解决了问题,但我决定使用以下替代算法:* num_x或y(n)= num_x(n)+ num_y(n) - num_xy(n)(假装'_'是一个标) 好吧无论如何,这是我的代码。

int sum_of_2_multiples(int num1, int num2, int min, int max)
{
   int num1_sum, num2_sum, num1xnum2_sum, num1xnum2;
   int counter;

   num1xnum2 = num1 * num2;
   //find the sum of multiples for the first value
   for (counter = num1; counter <= max; counter += num1)
   {
      num1_sum += counter;
   }
   //find the sum of multiples for the second value
   for (counter = num2; counter <= max; counter += num2)
   {
      num2_sum += counter;
   }
   //find the sum of multiples for first times second value
   for (counter = num1xnum2; counter <= max; counter += num1xnum2)
   {
      num1xnum2_sum += counter;
   }
   //Add; subtract the difference
   return ((num1_sum + num2_sum) - num1xnum2_sum);
}

我遇到的问题是,计算num2的倍数之和的第二个循环不能正常运行,即使它在结构上与计算num1的倍数之和的循环相同。重述:第一个和第三个循环都有效,但第二个循环返回的值约为400万。

发生了什么事?该代码在理论上起作用(着名的遗言),但实际上并不存在。 如果这有助于我使用GCC 4.8.3进行编译。

0 个答案:

没有答案