[英]Python displays all of the prime numbers from 1 through 100
我正在嘗試使用 Boolean function 打印從 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='')
但是當我將代碼放入 function 並運行模塊時,shell 上沒有任何打印。我做錯了什么?
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='')
下面是程序的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,
嘗試這個
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
怎么樣,它完成了同樣的事情,而是要求用戶輸入:
num1 = input("Input a number: ")
num2 = input("Input another number: ")
for x in range(num1,num2):
prime = True
for i in range(2,x):
if (x%i==0):
prime = False
if prime == True:
print x
print "Done......"
如果您只想解決自己輸入的數字,請取出這部分:
num1 = input("Input a number: ")
num2 = input("Input another number: ")
並將范圍從 num1,num2 更改為 1 和 100,例如:
for x in range(1,100):
我認為您最好的解決方案是附加一個數組,它可以解決逗號問題並且更快/更優化。 然后,如果需要,您可以刪除這些值,將它們存儲到文件中,你有什么。 祝你好運!
def get_primes(start, end):
out = list()
if start <= 1:
start = 2
sieve = [True] * (end + 1)
for p in range(start, end + 1):
if (sieve[p]):
out.append(p)
for i in range(p, end + 1, p):
sieve[i] = False
return out
print(get_primes(1, 100))
輸出:
[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]
請參閱我的評論和其他關於堆棧溢出的評論 #11619942 “在 python 中打印素數系列”
# Program to display prime number till n nubers
def prime(number):
for num in range(2,number):
status = True
for i in range(2,num):
if num % i == 0:
status = False
if status:
print(num)
prime(101)
print "Program Ends here"
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
這是捷徑...
非常簡單的方法如下:
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)
幾種不同的方法來做到這一點
primes = [x for x in range(2,100) if(all(x % j for j in range(2, x)))]
primes = []
for x in range(2, 101):
if(False not in (x % j for j in range(2, x))):
primes.append(x)
primes = []
for x in range(2, 101):
flag = True
for j in range(2, x):
if(not x % j):
flag = False
if(flag):
primes.append(x)
打印(素數)
這是一個僅根據質數檢查數字的示例,因為所有非質數都可以被質數整除( 鏈接到數學堆棧交換中的相關問題)
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)
num = 101
primes = [True] * num
primes[:2] = [False, False]
for i in range(4, num, 2):
primes[i] = False
pn = []
for i in range(3, num, 2):
if primes[i]:
for j in range(2 * i, num, i):
primes[j] = False
pn.append(i)
print(pn)
希望這可以幫助
for a in range(1, 101):
prime = True
for b in range(2, a):
if a % b == 0:
prime = False
if prime == True:
print(a)
break
def ex1():
count = 3
while count < 101:
isPrime = True
for i in range(2, int(math.sqrt(count))+1):
if count % i == 0:
isPrime = False
if isPrime:
print(count, end=' ')
count += 1
ex1()
prime_list = []
for number in range(2, 100 + 1):
is_prime = True
for i in range(2, number):
if number % i == 0:
is_prime = False
break
if is_prime == True:
prime_list.append(number)
print(prime_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.