From ff03868483c3d8082e2d065b82b5378c4e58a238 Mon Sep 17 00:00:00 2001 From: "zzysz@qq.com" Date: Thu, 28 Aug 2025 18:11:45 +0800 Subject: [PATCH] slurm --- slume_code/primes_100k_200k.py | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 slume_code/primes_100k_200k.py diff --git a/slume_code/primes_100k_200k.py b/slume_code/primes_100k_200k.py new file mode 100644 index 0000000..af03d02 --- /dev/null +++ b/slume_code/primes_100k_200k.py @@ -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() \ No newline at end of file