Aritmetiğin temel teoremi bize şunu söyler: "$1$'den büyük her doğal sayı, sonlu sayıda birtakım asal sayının pozitif kuvvetlerinin çarpımı şeklinde yazılır. Bu yazılış tek türlüdür."
Bu fikirden yola çıkarak devam etmek istiyorum. Sorudaki elde etmeye çalıştığımız sayı $A$ olsun. Aritmetiğin temel teoreminden, $A=p_1^{a_1} \cdots p_n^{a_n}$ olacak şekilde tek türlü $p_1 , \dots ,p_n$ asal sayıları ve $i=\overline{1,n}$ , $a_i >0$ sayıları vardır. Bu $p_i$'lere karşılık gelen $a_i$ leri belirlemeye çalışalım. $p_i^{a_i}=t$ ise $a_i\log(p_i)=\log(t)$ dir. Düzenlersek $a_i = \dfrac{\log(t)}{\log(p_i)}$ olur. Buradan şu yorumu yapabiliriz. Verilen bir $k$ sayısından küçük eşit herhangi bir asala baktığımızda,bu asalın en büyük kaçıncı kuvvetinin $k$ dan küçük eşit kaldığını logaritmalı yaptığımız işlemle bulabiliriz.
Örneğin $k=30$ ve $p=3$ için, $\dfrac{\log(30)}{\log(3)}=3.095\cdots$ dir. Yani $3$'ün $30$'dan küçük eşit kalacak şekilde en büyük tam kuvveti $\dfrac{\log(30)}{\log(3)}=3.095\cdots$ nin tam kısmı olan $3$ olur.
Soruya geri dönersek $k$'dan küçük eşit olan bütün $p_i$ asal sayıları için $a_i$'leri yukarıdaki gibi hesapladığımızda, $1$'den $k$'ya kadar olan bütün sayılara bölünebilen en küçük sayı $p_1^{a_1} \cdots p_n^{a_n}$ olur.
import math
def is_prime(n) :
for i in range(2,int(n**0.5)+1) :
if n % i == 0 :
return False
return True
k=int(input("k degerini girin:"))
i=2
A=1
while i <= k :
if is_prime(i) :
a = int(math.log(k) / math.log(i))
A = A * (i**a)
i += 1
print(A)