Crates.io | rust-eratos |
lib.rs | rust-eratos |
version | 0.1.1 |
source | src |
created_at | 2022-04-04 15:37:50.028582 |
updated_at | 2022-04-13 17:41:10.988639 |
description | An implementation of 'Sieve of Eratosthenes' for rust language practice. |
homepage | |
repository | https://github.com/lucidust/rust-eratos |
max_upload_size | |
id | 562090 |
size | 18,881 |
An implementation of 'Sieve of Eratosthenes' for rust language practice.
cargo install rust-eratos
rust-eratos 11
fn is_prime_number(n: u32) -> bool
fn get_prime_number_count_below(n: u32) -> usize
fn get_largest_prime_number_below(n: u32) -> u32
fn get_prime_numbers_below(n: u32) -> Vec<u32>
fn parse_args(args: &[String]) -> Result<u32, &'static str>
# output example
> rust-eratos 13
13 is a prime number.
There are 5 prime numbers less than 13, and the largest number is 11.
Prime numbers less than 13.
[2, 3, 5, 7, 11]
# python
import sys
def is_prime_number(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1): # (n ** 0.5) == (math.sqrt(n))
if n % i == 0:
return False
return True
def get_prime_number_count_below(n):
if n < 3:
return 0
count = 0
for i in range(2, n):
if is_prime_number(i):
count += 1
return count
def get_largest_prime_number_below(n):
for i in reversed(range(2, n)):
if is_prime_number(i):
return i
return 0
def get_prime_numbers_below(n):
# sieve = [0, 0] + [i for i in range(2, n)]
sieve = [0, 0]
for i in range(2, n):
sieve.append(i)
for i in range(2, int(len(sieve) ** 0.5) + 1):
if sieve[i] <= 0:
continue
index = i * i
while index < len(sieve):
sieve[index] = 0
index += i
primes = []
for i in range(2, len(sieve)):
if sieve[i] > 0:
primes.append(i)
return primes
# return [i for i in range(2, len(sieve)) if sieve[i] > 0]
def main(n):
print(f"{n} is a prime number.")
print(f"There are {get_prime_number_count_below(n)} prime numbers less than {n},"
f" and the largest number is {get_largest_prime_number_below(n)}")
print(f"Prime numbers less than {n}")
print(get_prime_numbers_below(n))
if __name__ == "__main__":
main(int(sys.argv[1]))