python
sxl: Mam problem z prostym program w Pythonie. Program ma sprawdzać, czy liczba jest pierwsza.
Dla początkowych liczb wychodzi wszystko okej, ale przy liczbie np. 1313 wychodzi że jest to
liczba pierwsza, a to nieprawda, bo dzieli się chociażby przez 13, 101... Mógłby mi ktoś pomóc
z tym? Co tam jest źle?
import math
print("Podaj n:")
n=int(input())
for i in range(2,n−1):
x=float(n%i)
if x==0:
print ("TO NIE JEST LICZBA PIERWSZA")
break
else:
print ("TO JEST LICZBA PIERWSZA")
break
4 mar 13:20
jc: Dlaczego nie napiszesz po prostu if n % i ==0: ?
(pomijam fakt, że to bardzo nieefektywny sposób)
4 mar 13:31
PW: 1313:1312=1,0007...
− może tę "końcówkę" komputer traktuje jako zero? Nie wiem jak działa float
Spróbuj ograniczyć zakres dzielników do "połowy n" zamiast n−1, co zresztą jest logiczne.
4 mar 13:37
jc: To jest przecież zupełnie bez sensu.
Dla 9 też będzie źle.
4 mar 13:46
ol: a nie mozesz tak?
def czypierwsza(liczba):
if liczba <= 1:
print("nie jest pierwsza")
else:
a=2
pom = True
while a != liczba:
if liczba%a == 0:
print("nie jest pierwsza")
pom = False
break
a+=1
if pom == True:
print("jest pierwsza")
4 mar 13:52
sxl: Znalazłam inny sposób. Ale dziękuję za zaangażowanie, miłego dnia
4 mar 13:56