Browse Source

slurm

master
zzysz@qq.com 2 months ago
parent
commit
ff03868483
1 changed files with 47 additions and 0 deletions
  1. +47
    -0
      slume_code/primes_100k_200k.py

+ 47
- 0
slume_code/primes_100k_200k.py View File

@@ -0,0 +1,47 @@
import math
import time

def sieve_primes(n):
if n < 2:
return []
sieve = [True] * (n+1)
sieve[0] = sieve[1] = False
for i in range(2, int(math.sqrt(n)) + 1):
if sieve[i]:
sieve[i*i : n+1 : i] = [False] * len(sieve[i*i : n+1 : i])
return [i for i, is_prime in enumerate(sieve) if is_prime]

def is_prime(n, small_primes):
if n < 2:
return False
max_divisor = int(math.sqrt(n)) + 1
for p in small_primes:
if p > max_divisor:
break
if n % p == 0:
return False
return True

def main():
start_time = time.time()
lower = 100000
upper = 200000
small_primes = sieve_primes(int(math.sqrt(upper)) + 1)
primes = []
for num in range(lower, upper + 1):
if is_prime(num, small_primes):
primes.append(num)
elapsed_time = time.time() - start_time
print(f"在 {lower}-{upper} 范围内找到 {len(primes)} 个质数")
print(f"计算耗时: {elapsed_time:.2f} 秒")
with open("primes_100k_200k.txt", "w") as f:
for p in primes:
f.write(f"{p}\n")

if __name__ == "__main__":
main()

Loading…
Cancel
Save