Changes

Jump to navigation Jump to search
no edit summary
irem(5,2);
irem(6,2);
 
 
A linha que lê se o tipo (j/i, integer) então, no nosso código, poderia ser substituida por if irem(j,i) = 0 então.
 
Aqui está o código
 
Esieve := proc(n)
local i,j, # loop indices
isPrime, # array of booleans
prime_list, # list of primes
sqrtn; # integer approx. of sqrt(n)
 
 
opções traçadas inicialiar o vetor
 
 
isPrime := table();
isPrime[1] := false;
for i from 2 to n do
isPrime[i] := true
od;
 
 
obter uma aproximação de inteiro para a raiz quadrada do argumento 'n'(adicionar 1 por segurança).
 
 
sqrtn := 1 + isqrt(n);
 
 
o crivo verdadeiro
 
for i from 1 to sqrtn do
 
pular isso se não for primo
 
 
 
if isPrime[i] then
for j from i+1 to n do
 
 
testa se i divide if type(j/i, integer), então
 
if irem(j,i) = 0 then
isPrime[j] := false
fi;
od;
fi;
od;
 
 
converte a lista de booleanos para uma lista de primos
 
 
prime_list := NULL;
for i from 1 to n do
if isPrime[i] then
prime_list := prime_list, i;
fi;
od;
RETURN(prime_list);
end:
 
Agora tente!
 
Esieve(10);
Esieve(100);
Esieve(1000);
31

edits

Navigation menu