繁体   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