Liczby pierwsze

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:

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")
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

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.

0

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

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
1
lambdadziara napisał(a):

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

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??

0

    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) 

1 użytkowników online, w tym zalogowanych: 0, gości: 1