使用嵌套 for 循环生成素数
Using nested for loops to generate primes
我创建了素性测试算法,但它不起作用。
本质上,这些是我的程序执行的步骤:
- 询问用户寻找素数的下限和上限
- 素数数组将存储我的素数
- 一个嵌套的for循环;第一个
for loop
获取用户下限和上限之间的每个数字,然后检查这些数字中的每一个是否都可以被 2 和用户上限之间的任何数字整除
- 如果下限和上限之间的任何数字可以被2和用户上限之间的任何数字整除,则该数字显然不是质数。
- 否则,数字附加到数组素数:
lower = int(input("Lower Bound: "))
upper = int(input("Upper Bound: "))
print ("Primes between " + str(lower) + " and " + str(upper) + ": ")
primes = []
for i in range (lower, upper):
for num in range (2, upper/2):
if i % num == 0:
print (str(i-(lower-1)) + ". " + str(i) + " = No")
break
else:
primes.append(i)
print(primes)
但是,不管一个数是不是素数,函数总是输出no,但我不知道为什么!
已修复。首先,我做了 floor 除法 //
运算符,所以它 returns 是一个整数。另外,我提出了一个条件,即除数不能被自己除掉。因为否则 4 将是 4 的质数。
lower = int(input("Lower Bound: "))
upper = int(input("Upper Bound: "))
print ("Primes between " + str(lower) + " and " + str(upper) + ": ")
primes = []
for i in range (lower, upper):
for num in range (2, upper//2):
if i % num == 0 and num != i: # modification here
print (str(i-(lower-1)) + ". " + str(i) + " = No")
break
else:
primes.append(i)
print(primes)
Out[1]: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43]
我创建了素性测试算法,但它不起作用。
本质上,这些是我的程序执行的步骤:
- 询问用户寻找素数的下限和上限
- 素数数组将存储我的素数
- 一个嵌套的for循环;第一个
for loop
获取用户下限和上限之间的每个数字,然后检查这些数字中的每一个是否都可以被 2 和用户上限之间的任何数字整除 - 如果下限和上限之间的任何数字可以被2和用户上限之间的任何数字整除,则该数字显然不是质数。
- 否则,数字附加到数组素数:
lower = int(input("Lower Bound: "))
upper = int(input("Upper Bound: "))
print ("Primes between " + str(lower) + " and " + str(upper) + ": ")
primes = []
for i in range (lower, upper):
for num in range (2, upper/2):
if i % num == 0:
print (str(i-(lower-1)) + ". " + str(i) + " = No")
break
else:
primes.append(i)
print(primes)
但是,不管一个数是不是素数,函数总是输出no,但我不知道为什么!
已修复。首先,我做了 floor 除法 //
运算符,所以它 returns 是一个整数。另外,我提出了一个条件,即除数不能被自己除掉。因为否则 4 将是 4 的质数。
lower = int(input("Lower Bound: "))
upper = int(input("Upper Bound: "))
print ("Primes between " + str(lower) + " and " + str(upper) + ": ")
primes = []
for i in range (lower, upper):
for num in range (2, upper//2):
if i % num == 0 and num != i: # modification here
print (str(i-(lower-1)) + ". " + str(i) + " = No")
break
else:
primes.append(i)
print(primes)
Out[1]: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43]