给定范围内的素数 Python
Prime numbers in given range Python
我试图制作一个遵循这一行的程序(示例它应该如何工作);
用户输入:
Give lower limit: 1
Give upper limit: 10
程序应从 1-10 打印:
1 is not a valid start number.
2 is a prime number.
3 is a prime number.
4 is not a prime number, because 2 * 2 = 4
5 is a prime number.
...
10 is not a prime number, because 2 * 5 = 10
检查给定范围后,应该打印:
10 numbers was examined, 4 of which were prime numbers
The last found prime number is 7
我已经尝试解决这个问题很长时间了,我太沮丧了,失去了一切。如果有人对此有解决方案,我很乐意看到并分析它,同时也从中学习。
非常感谢,这将是一个巨大的帮助!
lower = int(input("Give lower limit: ")) # Get lower bound, must be an int
upper = int(input("Give upper limit: ")) # Get upper bound, must be an int
print() # Print an empty line
primes = [] # An array to store the primes in
for i in range(lower, upper+1): # Go through the range
if i == 1:
print("1 is not a valid start number")
else:
primeFlag = True # Will only remain as true if the number is prime
for div in range(2, i): # Go from 2 to the current number
if i % div == 0:
primeFlag = False # If this happens, it isnt prime
if(primeFlag): # If it is a prime
primes.append(i) # Add to primes array
print(i," is a prime number")
else:
print(i," is not a valid prime")
print((upper-lower+1), " numbers were examined, ", len(primes), " were prime numbers")
print("The last found prime number is ", primes[-1:])
将产生:
Give lower limit: 1
Give upper limit: 10
1 is not a valid start number
2 is a prime number
3 is a prime number
4 is not a valid prime
5 is a prime number
6 is not a valid prime
7 is a prime number
8 is not a valid prime
9 is not a valid prime
10 is not a valid prime
10 numbers were examined, 4 were prime numbers
The last found prime number is [7]
我希望这对您有所帮助,它几乎可以让您获得您想要的输出,请花时间理解并从中学习。
我首先创建了一个范围low and high
的列表。从那里使用 is not a valid start
消除了 1
然后我制作了一个简单的检查列表,它运行 i % n
因为 n
是范围 2, i
中的值。现在,如果 all(check)
这意味着所有结果都返回非零值,因此该数字是素数。如果不是我声明数字不是质数,然后使用 enumerate, start = 2
如果 item
来自 check is
0,
not itemwill return
Trueand you can use the
idxof that
0`值来解释为什么它不是素数。
low = 1
high = 10
l = [*range(low, high + 1)]
for i in l:
if i == 1:
print('{} is not a valid start number'.format(i))
continue
check = [i % n for n in [*range(2, i)]]
if all(check):
print('{} is a prime number'.format(i))
else:
print('{} is not a valid prime number'.format(i))
for idx, item in enumerate(check, start = 2):
if not item:
print('\t{} * {} = {} '.format(idx, int(i/idx), i))
1 is not a valid start number
2 is a prime number
3 is a prime number
4 is not a valid prime number
2 * 2 = 4
5 is a prime number
6 is not a valid prime number
2 * 3 = 6
3 * 2 = 6
7 is a prime number
8 is not a valid prime number
2 * 4 = 8
4 * 2 = 8
9 is not a valid prime number
3 * 3 = 9
10 is not a valid prime number
2 * 5 = 10
5 * 2 = 10
我试图制作一个遵循这一行的程序(示例它应该如何工作); 用户输入:
Give lower limit: 1
Give upper limit: 10
程序应从 1-10 打印:
1 is not a valid start number.
2 is a prime number.
3 is a prime number.
4 is not a prime number, because 2 * 2 = 4
5 is a prime number.
...
10 is not a prime number, because 2 * 5 = 10
检查给定范围后,应该打印:
10 numbers was examined, 4 of which were prime numbers
The last found prime number is 7
我已经尝试解决这个问题很长时间了,我太沮丧了,失去了一切。如果有人对此有解决方案,我很乐意看到并分析它,同时也从中学习。
非常感谢,这将是一个巨大的帮助!
lower = int(input("Give lower limit: ")) # Get lower bound, must be an int
upper = int(input("Give upper limit: ")) # Get upper bound, must be an int
print() # Print an empty line
primes = [] # An array to store the primes in
for i in range(lower, upper+1): # Go through the range
if i == 1:
print("1 is not a valid start number")
else:
primeFlag = True # Will only remain as true if the number is prime
for div in range(2, i): # Go from 2 to the current number
if i % div == 0:
primeFlag = False # If this happens, it isnt prime
if(primeFlag): # If it is a prime
primes.append(i) # Add to primes array
print(i," is a prime number")
else:
print(i," is not a valid prime")
print((upper-lower+1), " numbers were examined, ", len(primes), " were prime numbers")
print("The last found prime number is ", primes[-1:])
将产生:
Give lower limit: 1
Give upper limit: 10
1 is not a valid start number
2 is a prime number
3 is a prime number
4 is not a valid prime
5 is a prime number
6 is not a valid prime
7 is a prime number
8 is not a valid prime
9 is not a valid prime
10 is not a valid prime
10 numbers were examined, 4 were prime numbers
The last found prime number is [7]
我希望这对您有所帮助,它几乎可以让您获得您想要的输出,请花时间理解并从中学习。
我首先创建了一个范围low and high
的列表。从那里使用 is not a valid start
消除了 1
然后我制作了一个简单的检查列表,它运行 i % n
因为 n
是范围 2, i
中的值。现在,如果 all(check)
这意味着所有结果都返回非零值,因此该数字是素数。如果不是我声明数字不是质数,然后使用 enumerate, start = 2
如果 item
来自 check is
0,
not itemwill return
Trueand you can use the
idxof that
0`值来解释为什么它不是素数。
low = 1
high = 10
l = [*range(low, high + 1)]
for i in l:
if i == 1:
print('{} is not a valid start number'.format(i))
continue
check = [i % n for n in [*range(2, i)]]
if all(check):
print('{} is a prime number'.format(i))
else:
print('{} is not a valid prime number'.format(i))
for idx, item in enumerate(check, start = 2):
if not item:
print('\t{} * {} = {} '.format(idx, int(i/idx), i))
1 is not a valid start number 2 is a prime number 3 is a prime number 4 is not a valid prime number 2 * 2 = 4 5 is a prime number 6 is not a valid prime number 2 * 3 = 6 3 * 2 = 6 7 is a prime number 8 is not a valid prime number 2 * 4 = 8 4 * 2 = 8 9 is not a valid prime number 3 * 3 = 9 10 is not a valid prime number 2 * 5 = 10 5 * 2 = 10