Pythonでは,薬水または小数,およびアラクレマイシンのふるいを判別した.
14179 ワード
判別基本アルゴリズム
に水を飲ませる
def check_divisor(nums):
divisors = []
for i in range(1, nums+1):
if nums % i == 0:
divisors.append(i)
return divisors
少数
1とそれ自体以外の自然数は不可分であり、1より大きい自然数である.
def check_divisor(nums):
divisors = []
for i in range(1, nums+1):
if nums % i == 0:
divisors.append(i)
return divisors
素数判別基本アルゴリズム
def check_prime_number(nums):
for i in range(2,nums):
# 2 이상의 자연수인 nums에 대해 반복문을 돌며 nums-1까지 일일히 확인해
if i % nums == 0:
return False
# i가 nums와 나누어 떨어지면 nums는 소수가 아님
return True
薬性 n
が自然数であると仮定すると、a * b = n
を満たす自然数a
およびb
が存在する.また、n = m * m
人m
がいれば、a * b = m * m
が成立する.この状態で、a
とb
が自然数であれば、以下の3つのケースのいずれかである必要がある.
a = m, b = m. 즉 a = b
a > m, b < m
a < m, b < m
a
とb
は自然水のために、常に以上の3つの例のうちの1つであり、min(a,b) <= m
であるべきである.すなわち、a
およびb
の小数字は、m
、すなわちn
の平方根以下である.この原理により,全
nums
の範囲を確認する必要はなく,nums
の平方根を確認すれば,薬水を見つけたり少数の判別を行うことができる.約数の性質を利用してアルゴリズムを最適化する
に水を飲ませる
def check_divisor(nums):
divisors = []
for i in range(1, int(nums**0.5) + 1):
if nums % i == 0:
divisors.append(i)
if i != int(nums/i):
divisors.append(int(nums/i))
return sorted(divisors)
少数
def check_prime(num):
if num == 1: return False # 1은 소수가 아니므로 제외
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
エラトステネスのふるい
素数を判別する多様なアルゴリズムの中で,任意の自然数n
以下の特定の範囲で素数を探すことが最も速く最も簡単な方法である.
例を挙げると,120以下の自然数の中で少数を探す.
原理は以下の通り.
def check_divisor(nums):
divisors = []
for i in range(1, int(nums**0.5) + 1):
if nums % i == 0:
divisors.append(i)
if i != int(nums/i):
divisors.append(int(nums/i))
return sorted(divisors)
def check_prime(num):
if num == 1: return False # 1은 소수가 아니므로 제외
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
素数を判別する多様なアルゴリズムの中で,任意の自然数
n
以下の特定の範囲で素数を探すことが最も速く最も簡単な方法である.例を挙げると,120以下の自然数の中で少数を探す.
原理は以下の通り.
実装を試みる
def prime_number(num):
# 0부터 num 범위의 자연수의 소수 판별 여부를 위한 리스트.
# 0과 1은 소수가 아니므로 False로 선언
check_prime = [False, False] + [True] * (num - 1)
# 앞서 설명한 약수의 원리를 응용해 소수 판별 범위 축소
for i in range(2, int(num**0.5)+1):
if check_prime[i]:
# i가 소수라면 i 이후 나올 i의 배수들은 전부 소수가 아니므로 False 선언
for j in range(i+i, num+1, i):
check_prime[j] = False
return [i for i in range(2, num+1) if check_prime[i]]
print(prime_numbers(131))
>> [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131]
reference
[これが符号化テストwith Python]37強素数判別アルゴリズム-Youtube
[これが符号化テストwith Python]37強素数判別アルゴリズム
[C++]最良の少数を探して、エラトスのふるい
[私が見たいPython]少数判別(エラトスのふるい)
小数判別アルゴリズム—Python(Python)
エラトニスのふるい
Reference
この問題について(Pythonでは,薬水または小数,およびアラクレマイシンのふるいを判別した.), 我々は、より多くの情報をここで見つけました https://velog.io/@gshduet/divisor-prime-numbersテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol