Есть ли другой способ сделать это без использования циклов for или while?
Да, вы можете использовать рекурсивную функцию:
def prime_number(n, d):
if n//2 < d:
return True
if n%d == 0:
return False
return prime_number(n, d+1)
def find_primes(n,i, result):
if i == n + 1:
return result
if prime_number(i, 2):
result.append(i)
return find_primes(n, i+1, result)
print(find_primes(100,2, []))
выход
[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]
Кроме того, вы можете упростить for loops
, используя list comprehension
.
primes = [n for n in range(2, 50) if all(n % d for d in range(2, n))]