rust-eratos

An implementation of 'Sieve of Eratosthenes' for rust language practice.

Usage

cargo install rust-eratos rust-eratos 11


Rust 언어에 적응하기

이 문서의 목표

사전 지식

지금 단계에서 집중해야 할 것

지금은 집중하지 않을 것

따라하기

n 이 소수인지 판별하기

rust fn is_prime_number(n: u32) -> bool

n 미만의 소수의 수를 구하기

rust fn get_prime_number_count_below(n: u32) -> usize

n 미만의 가장 큰 소수를 구하기

rust fn get_largest_prime_number_below(n: u32) -> u32

n 미만의 소수들을 구하기

rust fn get_prime_numbers_below(n: u32) -> Vec<u32>

n을 커맨드 라인 입력을 정수로 변환하기

rust fn parse_args(args: &[String]) -> Result<u32, &'static str>

작성한 기능들로 stdout에 출력하기

```

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

python

import sys

def isprimenumber(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 getprimenumbercountbelow(n): if n < 3: return 0

count = 0
for i in range(2, n):
    if is_prime_number(i):
        count += 1

return count

def getlargestprimenumberbelow(n): for i in reversed(range(2, n)): if isprimenumber(i): return i

return 0

def getprimenumbers_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 {getprimenumbercountbelow(n)} prime numbers less than {n}," f" and the largest number is {getlargestprimenumberbelow(n)}") print(f"Prime numbers less than {n}") print(getprimenumbers_below(n))

if name == "main": main(int(sys.argv[1]))

```