#This Program Originally Created by vyn.
#17th Jan 2012
import random
import os
def moduloExp (x,y,n): #fungsi mencari modulo exp ~vyn
z = 1
for i in range (1,y+1):
z = z * x % n
return z
def cekBanyakRandom (i): #fungsi mencari berapa kali pengambilan \'a\' dalam metode fermat ~vyn
if (i <= 100):
kaliCek = 4
elif (i > 100 and i<= 1000 ):
kaliCek = 7
elif (i > 1000 and i<=10000):
kaliCek = 10
else:
kaliCek = 14
return kaliCek
awals = int(input("Nilai awal = "))
akhir = int(input("Nilai akhir = "))
if awals % 2 == 0: #pengkondisian nilai awal ~vyn
awal = awals + 1
elif awals == 1:
awal = 2
jumlah = 0
if awal == 2:
print(awal,end=" ")
awal = awal+1
jumlah = jumlah+1
for i in range (awal,akhir+1,2): #pengecekan selang dua ~vyn
for j in range (1,cekBanyakRandom(i)):
hasil = 0
x = random.randint(1,i-1)
sementara = moduloExp (x,i-1,i)
if sementara != 1:
break
else:
hasil = sementara
if hasil == 1:
jumlah = jumlah + 1 #variabel penghitung bilangan prima ~vyn
if (jumlah % 5 == 0):
print(i)
print("") #pindah baris jika sudah ditampilkan 5 ~vyn
else:
print(i,end = " ") #bilangan ditampilkan secara horizontal ~vyn
print("")
print("\\n\\nJumlah bilangan prima dari ",awals," hingga ",akhir," adalah: ",jumlah)
os.system("pause") #untuk memberikan jeda sampai user menekan tombol enter.