Project Euler Number 1 perl
Project Euler Number 1 perl
我是一名初学者编码员,我从 projecteuler.net 开始做 Project Euler 的东西,我正在解决问题 #1。问题是:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
我也有以下代码:
#!/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";
我的输出是这样的:
266333
但我知道事实是错误的。也许它正在讨论 5 和 3 共享的常见答案,例如 15 或 45。
不管是什么,有什么建议吗?
Maybe it's going over common answers that 5 and 3 share, like 15 or 45
是的,这正是正在发生的事情。您将需要防止将公倍数添加到总和中两次。也许在您的循环之一中添加条件语句。 (我宁愿不给出确切答案,让你自己想办法)
如果涉及到两个循环,它们都需要内部的一些条件来跳过一些迭代。也许您还可以考虑仅使用一个循环的替代解决方案:
for (my $n = 1; $n < 1000; $n++) {
if ( ... ) { # <--*
$d += $n;
}
}
它可能更容易,代码重复更少。
现在我们只需要找出 if
语句的关键表达式。 :-)
我认为你在一个阶段做的太多了。不要边走边添加数字。相反,获取您感兴趣的数字列表,然后将它们全部相加。
哦,这里有个小提示。如果您正在尝试存储事物列表并且不想重复 - 那么哈希的键非常适合。
我是一名初学者编码员,我从 projecteuler.net 开始做 Project Euler 的东西,我正在解决问题 #1。问题是:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
我也有以下代码:
#!/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";
我的输出是这样的:
266333
但我知道事实是错误的。也许它正在讨论 5 和 3 共享的常见答案,例如 15 或 45。
不管是什么,有什么建议吗?
Maybe it's going over common answers that 5 and 3 share, like 15 or 45
是的,这正是正在发生的事情。您将需要防止将公倍数添加到总和中两次。也许在您的循环之一中添加条件语句。 (我宁愿不给出确切答案,让你自己想办法)
如果涉及到两个循环,它们都需要内部的一些条件来跳过一些迭代。也许您还可以考虑仅使用一个循环的替代解决方案:
for (my $n = 1; $n < 1000; $n++) {
if ( ... ) { # <--*
$d += $n;
}
}
它可能更容易,代码重复更少。
现在我们只需要找出 if
语句的关键表达式。 :-)
我认为你在一个阶段做的太多了。不要边走边添加数字。相反,获取您感兴趣的数字列表,然后将它们全部相加。
哦,这里有个小提示。如果您正在尝试存储事物列表并且不想重复 - 那么哈希的键非常适合。