簡體   English   中英

編寫一個 function,它返回存在的素數的數量,包括給定的數字

[英]Write a function that returns the number of prime numbers that exist up to and including a given number

例如count_primes(100) --> 25

def count_primes(num):
    for n in range(2,num+1):
        prime=True
        for i in range(2,n):
            if(n%i == 0):
                prime=False
        if prime:
            print(n)

但我不知道如何計算數字。它只打印素數。

增加一個計數器變量而不是打印數字。

一旦找到除數,您也可以停止循環,因此在設置prime = False后使用break

def count_primes(num):
    counter = 0
    for n in range(2,num+1):
        prime=True
        for i in range(2,n):
            if(n%i == 0):
                prime=False
                break
        if prime:
            counter += 1
    return counter

你可以添加一個數組,最后只計算數組的長度

def count_prime(num):
    arr=[2]
    for n in range(3,num+1):
        prime=True
        for i in arr:
            if(n%i == 0):
                prime=False
        if prime:
            arr.append(n)
    print (arr)
    return len(arr)

計數素數:編寫一個函數,返回存在的素數數量,包括給定數字,例如 count_primes(100) --> 25

def count_prime(num):
# Check for 0 and 1 input
if num < 2:
    return 0

# 2 or Greater
# list to store our prime number
primes = [2]

#Counter going up to the input num
x = 3

while x<=num:
    for y in range(3,x,2):
        if x%y == 0:
            x += 2
            break
    else:
        primes.append(x)
        x += 2
print(primes)
return len(primes)
def num_check(num): primes=[] if num < 2: return 0 for num in range(num+1): if num>1: for i in range(2,num): if (num%i)==0: break else: primes.append(num) print(primes) return len(primes)
def count_primes(num):
    key=0
    for i in range(3,num):
        flag=0
        for k in range(2,i):
            if(i%k==0):
                flag+=1
            else:
                pass
        if (flag==0):
            key+=1
    return key+1

如果您熟悉 lambdas、reduce 和 filter 函數,這里有一種方法可以在一行中完成:

count_primes = lambda x : len(reduce(lambda acc, y: list(filter(lambda z: (z==y) or (z % y != 0), acc)), [i for i in range(2, x+1)], [i for i in range(2, x+1)]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM