問題1.22(考察)

1000の場合

guile> (search-for-primes 1000 30)

1001
1003
1005
1007
1009 *** 62
1011
1013 *** 63
1015
1017
1019 *** 62
1021 *** 63
1023
1025
1027
1029
1031 *** 63
1033 *** 47
1035
1037
1039 *** 62
1041
1043
1045
1047
1049 *** 46
1051 *** 63
1053
1055
1057
1059
done

10000の場合

guile> (search-for-primes 10000 30)

10001
10003
10005
10007 *** 171
10009 *** 172
10011
10013
10015
10017
10019
10021
10023
10025
10027
10029
10031
10033
10035
10037 *** 172
10039 *** 172
10041
10043
10045
10047
10049
10051
10053
10055
10057
10059
done

100000の場合

guile> (search-for-primes 100000 30)

100001
100003 *** 547
100005
100007
100009
100011
100013
100015
100017
100019 *** 547
100021
100023
100025
100027
100029
100031
100033
100035
100037
100039
100041
100043 *** 547
100045
100047
100049 *** 547
100051
100053
100055
100057 *** 531
100059
done

1000000の場合

guile> (search-for-primes 1000000 30)

1000001
1000003 *** 1735
1000005
1000007
1000009
1000011
1000013
1000015
1000017
1000019
1000021
1000023
1000025
1000027
1000029
1000031
1000033 *** 1734
1000035
1000037 *** 1719
1000039 *** 1734
1000041
1000043
1000045
1000047
1000049
1000051
1000053
1000055
1000057
1000059
done

まとめると以下のようになる。

  • 1009 *** 62
  • 1013 *** 63
  • 1019 *** 62
  • 10007 *** 171
  • 10009 *** 172
  • 10037 *** 172
  • 100003 *** 547
  • 100019 *** 547
  • 100043 *** 547
  • 1000003 *** 1735
  • 1000033 *** 1734
  • 1000037 *** 1719

増加の程度は √10 ≒ 3.16227766016838 なので、

 171 /  62 ≒ 2.75806451612903
 547 / 171 ≒ 3.19883040935673
1735 / 547 ≒ 3.17184643510055

1000→10000の間以外はほぼ予想値と一致する。
1000→10000の場合は計算時間が少ないため誤差が大きいのかも。

試しに計算回数を500→5000に上げてみた。

  • 1009 *** 547
  • 1013 *** 531
  • 1019 *** 547
  • 10007 *** 1766
  • 10009 *** 1734
  • 10037 *** 1750
1766 / 547 ≒ 3.22851919561243

いい感じ。

増加の程度が√10なので、

100000(計算回数500) ≒ 1000(計算回数5000)
1000000(計算回数500) ≒ 10000(計算回数5000)

にもなっている!