5

ブール関数を使用して、1 から 100 までのすべての素数を出力しようとしています。

以下は、動作している私のコードです。

for n in range(1,101):
status = True
if n < 2:
    status = False
else:
    for i in range(2,n):
        if n % i == 0:
            status = False

    if status:
        print(n, '', sep=',', end='')

しかし、関数と実行モジュールにコードを入れると、シェルには何も出力されません。私は何を間違えましたか?

is_prime():
    for n in range(1,101):
        status = True
        if n < 2:
            status = False
        else:
            for i in range(2,n):
                if n % i == 0:
                    status = False
        return status

if is_prime():    
    print(n, '', sep=',', end='')

以下は、プログラムの出力です。最後のコンマが印刷されないようにするにはどうすればよいですか?
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,

4

9 に答える 9

5

これを試して

def is_prime(n):
    status = True
    if n < 2:
        status = False
    else:
        for i in range(2,n):
            if n % i == 0:
                status = False
    return status

for n in range(1,101):
    if is_prime(n):
        if n==97:
            print n
        else:
            print n,",",

output
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

于 2013-04-12T06:03:15.283 に答える
1
n=int(input())
for i in range(1,int(n)):
    for j in range(2,(i+1)):
        if i%j==0:
            if i==j:
                print(i)
            break

これが近道…

于 2017-10-15T15:37:09.280 に答える
1

次のようにそれを行うための非常に簡単な方法:

def prime(n):
    p = True
    for i in range(2,n):
        if (n%i == 0):
            p = False
    return p

for j in range(2,201):
    if prime(j):
        print (j)
于 2018-06-02T10:24:32.790 に答える
0

これは、素数以外のすべての数が素数で割り切れるため、素数に対してのみ数がチェックされる例です ( math stackexchange の関連する質問へのリンク)。

prime_nums = []

for num in range(2,101):
    isPrime = True
    for prime in prime_nums:
        isPrime = not (num % prime == 0)
        if prime * 2 >= num or not isPrime:
            break
    if isPrime:
        prime_nums.append(num)
print(prime_nums)
于 2019-01-04T05:20:56.447 に答える