wiki:algorithm:素数を表示してみる_チューニング

素数を表示してみる(チューニング)

元のコード

  1. #100までの数を、一時保存できる変数(NaturalNumber)を用意する
  2. NaturalNumber = []
  3.  
  4. #100までの素数を、一時保存できる変数(PrimeNumber)を用意する
  5. PrimeNumber = []
  6.  
  7. #反復処理の回数を、一時保存できる変数(Counter)を用意する
  8. Counter = 0
  9.  
  10. #変数(Counter)に1を代入する
  11. Counter = 1
  12.  
  13. #変数(Counter)が100になるまで、以下の処理を繰り返す
  14. while Counter <= 100:
  15.  
  16. #変数(NaturalNumber)に、変数(Counter)の値を代入する
  17. NaturalNumber.append(Counter)
  18.  
  19. #変数(Counter)の値に1を足す
  20. #変数(Counter)に変数(Counter)の値を代入する
  21. Counter = Counter + 1
  22.  
  23. #反復処理の回数を、一時保存できる変数(Counter2)を用意する
  24. Counter2 = 0
  25.  
  26. #変数(Counter)に1を代入する
  27. Counter = 0
  28.  
  29. #変数(Counter)が100になるまで、以下の処理を繰り返す
  30. while Counter < 100:
  31.  
  32. #変数(Counter2)に2を代入する
  33. Counter2 = 2
  34.  
  35. #変数(Counter2)が(NaturalNumber@Counter)未満の間、以下の処理を繰り返す
  36. while Counter2 < NaturalNumber[Counter]:
  37.  
  38. #変数(NaturalNumber@Counter)を変数(Counter2)で割った余りを出す
  39. #余りが0なら
  40. if NaturalNumber[Counter] % Counter2 == 0 :
  41. #breakする
  42. break
  43. #余りが0以外なら
  44. else :
  45. #変数(Counter2)の値に1を足す
  46. #変数(Counter2)に変数(Counter2)の値を代入する
  47. Counter2 = Counter2 + 1
  48.  
  49.  
  50. #breakしなかったら
  51. else :
  52. #変数(PrimeNumber)に代入する
  53. PrimeNumber.append(NaturalNumber[Counter])
  54.  
  55. #変数(Counter)の値に1を足す
  56. #変数(Counter)に変数(Counter)の値を代入する
  57. Counter = Counter + 1
  58.  
  59. #変数(PrimeNumber)を表示する
  60. print (PrimeNumber)

改善後のソース

  1. #100までの素数を、一時保存できる変数(PrimeNumber)を用意する
  2. PrimeNumber = []
  3.  
  4. #反復処理の回数を、一時保存できる変数(Counter2)を用意する
  5. Counter2 = 0
  6.  
  7. #変数(Counter)に2を代入する
  8. Counter = 2
  9.  
  10. #変数(Counter)が100になるまで、以下の処理を繰り返す
  11. while Counter < 100:
  12.  
  13. #変数(Counter2)に2を代入する
  14. Counter2 = 2
  15.  
  16. #変数(Counter2)が(Counter)未満の間、以下の処理を繰り返す
  17. while Counter2 < Counter:
  18.  
  19. #変数(Counter)を変数(Counter2)で割った余りを出す
  20. #余りが0なら
  21. if Counter % Counter2 == 0 :
  22. #breakする
  23. break
  24. #余りが0以外なら
  25. else :
  26. #変数(Counter2)の値に1を足す
  27. #変数(Counter2)に変数(Counter2)の値を代入する
  28. Counter2 = Counter2 + 1
  29.  
  30.  
  31. #breakしなかったら
  32. else :
  33. #変数(PrimeNumber)に代入する
  34. PrimeNumber.append(Counter)
  35.  
  36. #変数(Counter)の値に1を足す
  37. #変数(Counter)に変数(Counter)の値を代入する
  38. Counter = Counter + 1
  39.  
  40. #変数(PrimeNumber)を表示する
  41. print (PrimeNumber)

実行結果

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

そもそも、1~100までの整数をいったん保管しておくこと自体が無駄な作業ですね。なので、NaturalNumberを無くしました。
このように無駄なコードは無駄な変数に直結していることはわかります。NaturalNumberを無くせば良いという発想で見ていくと、無駄な処理が見えてきます。そうすると、簡略化した形で書けるようになってきます。

  • wiki/algorithm/素数を表示してみる_チューニング.txt
  • 最終更新: 2024/11/04 00:47
  • by 127.0.0.1