项目 Euler Number 1 perl

Gra*_*SOS 0 perl for-loop project

我是一名初级编码员,我已经开始从 projecteuler.net 做 Project Euler 的工作,并且遇到了问题 #1。问题是:

如果我们列出所有 10 以下的自然数是 3 或 5 的倍数,我们会得到 3、5、6 和 9。这些倍数之和是 23。

找出 1000 以下所有 3 或 5 的倍数之和。

我也有以下代码:

#!/usr/bin/perl

use strict;
use warnings;

my $a;
my $b;
my $c = 0;
my $d = 0;
my $e;

for ($a= 0; $a < 1000; $a += 3 ) {
    $d = $d + $a;
}
for ($b= 0; $b < 1000; $b += 5 ) {
    $c = $c + $b;
}
$e = $c + $d;

printf "$e \n";
Run Code Online (Sandbox Code Playgroud)

我的输出是这样的:

266333

但我知道一个事实是错误的。也许它正在讨论 5 和 3 共享的常见答案,例如 15 或 45。

不管是什么,建议?

小智 5

如果涉及两个循环,它们都需要一些内部条件来跳过一些迭代。也许您还可以考虑仅使用一个循环的替代解决方案:

for (my $n = 1; $n < 1000; $n++) {
   if ( ... ) { # <--*
     $d += $n;
   }
}
Run Code Online (Sandbox Code Playgroud)

它可能更容易,更少的代码重复。

现在我们只需要找出该if语句的关键表达式。:-)