matematykaszkolna.pl
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 emotka
4 mar 13:56