Liczby pierwsze

KK
  • Rejestracja:ponad 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:1
0

Po zamieszczeniu tego kodu na spoju wyświetla błędną odpowiedzi. Sprawdziłem sporo wariantów i za każdym razem zwraca poprawny wynik. W czym tkwii problem:

Kopiuj
def isPrime(a):
    if a==1:
        return False
    for i in range(1,a)):
        if a%i==0:
            return False
    return True
n = int(input("podaj ilosc liczb: "))
for i in range(int(n)):
    wynik = isPrime(int(input("podaj liczbe:")))
    if wynik == True:
        print("TAK")
    else:
        print("NIE")
edytowany 1x, ostatnio: Shalom
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
0

Nie moze byc zadnych zbednych rzeczy na stdout jak "podaj liczbe"

Poza tym tutaj masz mniej naiwne algo
https://eduinf.waw.pl/inf/alg/001_search/index.php
Np
https://eduinf.waw.pl/inf/alg/001_search/0019.php


λλλ
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Masz zły format. Wyświetlasz jakieś pytania których ma nie być. A sama funkcja dośc słaba wiec pewnie przekroczy czas.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:minuta
  • Postów:4936
0

lambdadziara
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 17 godzin
  • Postów:443
0

przepisalam z pseudokodu na wiki wiec pewnie da sie krocej, zwraca wszystkie prajmy do n

Kopiuj
def sieve(n):
	A=[True]*(n+1)
	t=[]
	i=2
	while i <= math.sqrt(n):
		if A[i]==True:
			j=2
			k=j*i
			while k <= n:
				A[k]=False
				j=j+1
				k=j*i
		i+=1
	for i in range(2,len(A)):
		if A[i]==True: t.append(i)
	return t
edytowany 1x, ostatnio: lambdadziara
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
1
lambdadziara napisał(a):

przepisalam z pseudokodu na wiki wiec pewnie da sie krocej, zwraca wszystkie prajmy do n

Kopiuj
def sieve(n):
	A=[True]*(n+1)
	t=[]
	i=2
	while i <= math.sqrt(n):
		if A[i]==True:
			j=2
			k=j*i
			while k <= n:
				A[k]=False
				j=j+1
				k=j*i
		i+=1
	for i in range(2,len(A)):
		if A[i]==True: t.append(i)
	return t

A po co mu wszystkie??


λλλ
lambdadziara
to niech sobie zmodyfikuje
PA
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:83
0
Kopiuj

    pierw_spr = []
    for i in range(0, 10001, +1):
        pierw_spr.append(0)
    for a in range(2, 10001, +1):
        c = a
        if pierw_spr[a] == 0:
            pierw_spr[a] = 1
        while a+c < 10001:
            a = a+c
            pierw_spr[a] = 2
    zest = int(input(''))
    for i in range(0, zest, +1):
        licz = int(input(''))
        if pierw_spr[licz] == 1:
            print ("TAK")
        else:
            print ("NIE")
    exit(0) 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.