私は現在、「1 から 20 までのすべての数で割り切れる最小の正の数は?」という問題を解決しようとしています。
これまでのところ、動作するように見えるコードを作成しましたが、非常に長い時間がかかります。さらに、if 内で膨大な量の「and」ステートメントを使用する必要がありますが、これは非常に効率的でも専門的でもないようです。
このコードを最適化し、より整頓するにはどうすればよいでしょうか?
number = 1
result = 0
def divide(candidate):
if candidate % 2 == 0 and candidate % 3 == 0 and candidate % 4 == 0 and candidate % 5 == 0 and candidate % 6 == 0 and candidate % 7 == 0 and candidate % 8 == 0 and candidate % 9 == 0 and candidate % 10 == 0 and candidate % 11 == 0 and candidate % 12 == 0 and candidate % 13 == 0 and candidate % 14 == 0 and candidate % 15 == 0 and candidate % 16 == 0 and candidate % 17 == 0 and candidate % 18 == 0 and candidate % 19 == 0 and candidate % 20 == 0:
global result
result = 1
return 1
else:
global number
result = 0
number = number + 1
return 0
while result == 0:
divide(number)
print "The lowest number divisible by all integers between 1-20 is:", number
明確にするために、これは宿題ではありません。私は独学で Python を学んでおり、その一環として ProjectEuler の問題をいくつか試しています。