| @@ -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() | |||||