0
0

More than 1 year has passed since last update.

小道具:素数表(エラトステネスの篩)

Posted at

指定した上限で素数表を出力します。アルゴリズムはエラトステネスの篩なので遅いです。

pntab.py
#!/usr/bin/env python3

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('N', type=int, help="上限")
args = parser.parse_args()

pntab = lambda N: (set([2] + [o for o in range(3, N + 1, 2)]) -
                   set(a * b
                       for a in range(3, (N + 2) // 3, 2)
                       for b in range(3, (N + a - 1) // a, 2)))

m = ''
for d in sorted(pntab(args.N)):
    m += '%d,' % d
    if len(m) > 72:
        print(m)
        m = ''
m and print(m)
実行例
$ python3 pntab.py 1000
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,101,
103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,
199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,
313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,
433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,
563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,
673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,
811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,
941,947,953,967,971,977,983,991,997,
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0