No przede wszystkim nie sprawdzasz podzielności do ilości liczb pierwszych tylko do liczby, Po co zmienna x? Można wpisać prosto do tablicy, która tak przy okazji jest niepotrzebna. Zmień układ pętli, dla znalezionego dzielnika przerwij pętlę i zajmij się wypisaniem (jakiś bool może pomóc albo coś). Bo jak na to na razie patrzę to nie działa to chyba zbyt dobrze.
To mój kod: http://ideone.com/A7pg0c21. Na ideone działa ale sędzia nie akceptuje. Proszę o komentarz co powinienem poprawić. Z góry dziękuje.
Witam.
napisałem 2 programy na liczby pierwsze i nie przeszły akceptacji. Nie wiem w czym jest problem. prosiłbym o wskazówki.
1 program zawiera błąd. Nie wiem jaki.
kod zatwierdzony - zgodnie z zasadami musiałem usunąć kod
2 program za długo liczy.
test = int(input('Input:\n'))
tab = []
count = 0
while test > count:
liczba = int(input())
tab.append(liczba)
count += 1
print('\nOutput:')
for n in tab:
p = 2
if n == 1 or n == 0:
print('NIE')
while p <= n:
if p == n:
print('TAK')
break
elif n % p == 0:
print('NIE')
break
p += 1
Czemu i po co!?
Zmień z powrotem na tak jak było - >> zmień randint na input(), oraz popraw tylko to, o czym napisał Ci @sig
nie bardzo rozumiem, co to znaczy: w kompilatorze wszystko działa - czy to, że program się kompiluje ?
doskonale za to rozumiem: ale nie zalicza mi zadania - i słusznie, bo program daje rozwiązanie innego problemu, niż podano w zadaniu - przeczytaj uważnie jeszcze raz (dwa, trzy, ... aż do zrozumienia) treść zadania
Masz o jeden nawias za dużo. Po co Ci ten warunek:
Zobacz sobie test:
2
100
50
Ta pętla jest dla mnie dzika. Spróbuj ją jeszcze raz zdefiniować. Zrób sobie nieskończoną pętle for, zadeklaruj jednostkę pomocniczą (zorientujesz się o jakiej wartości), inkrementuj ją i nie zapomnij o przerwaniu funkcji jak zostanie spełniony warunek. Wydaje mi się, że to najłatwiejszy sposób. Ale jestem początkujący więc mogę się mylić Powodzenia