terça-feira, 2 de janeiro de 2018

Procurando números primos


Existe um teorema que relaciona a quantidade de números primos e quantidade de números inteiros:

Teorema dos números primos. Seja $\Pi (n)$ a função de contagem de números primos, que retorna o número de números primos entre 1 e $n$. Então vale o limite:
\[ \lim _{n\rightarrow \infty}{\frac {\Pi(n)}{n/\ln n}}=1 \]

Obs: esse limite só começa a ficar realmente próximo de 1 para valores muito grandes de $n$, tipo $n > 10^{23}$.

Código Scilab abaixo encontra os números primos entre 1 e N (= 100.000) e compara com o valor teórico dado pelo teorema acima.

function np = primos(fk)
    np = 1;
    conta = 3;
    fr = round(sqrt(fk))+2;
    while (conta        df = pmodulo(fk,conta);
        if df < 0.5 then
            np = 0; conta = fr + 1; //número composto
        end
        conta = conta + 2;
    end
endfunction

clc;
tic();
Nmax = 100000;
vp = [2, 5, 7];
for k=9:2:Nmax
    if primos(k)>0 then vp = [vp, k];
    end
end

fim = max(size(vp));
vrelac = zeros(1,Nmax);
for k=1:fim
    vrelac(vp(k)) = k;
end
tt=toc();
disp(tt);

plot(1:max(size(vrelac)),vrelac,'o');
n=2:max(size(vrelac));
y=n./log(n);
plot(n,y,'r'); title(['Comparação entre ','$\Pi(n)$',' e ','$n/\ln(n)$','. Tempo = ',string(tt)]);
legend('$\huge{\Pi(n)}$','$\huge{n/\ln(n)}$',a=2);


for k=1:5:200
    mprintf('%d, %d, %d, %d, %d, %d, %d \n',vp(k:k+6))

end

*************************
Alguns dos primeiros números primos:

2, 5, 7, 11, 13, 17, 19
17, 19, 23, 29, 31, 37, 41
37, 41, 43, 47, 53, 59, 61
59, 61, 67, 71, 73, 79, 83
79, 83, 89, 97, 101, 103, 107
103, 107, 109, 113, 127, 131, 137
131, 137, 139, 149, 151, 157, 163
157, 163, 167, 173, 179, 181, 191
181, 191, 193, 197, 199, 211, 223
211, 223, 227, 229, 233, 239, 241
239, 241, 251, 257, 263, 269, 271
269, 271, 277, 281, 283, 293, 307
293, 307, 311, 313, 317, 331, 337
331, 337, 347, 349, 353, 359, 367
359, 367, 373, 379, 383, 389, 397
389, 397, 401, 409, 419, 421, 431
421, 431, 433, 439, 443, 449, 457
449, 457, 461, 463, 467, 479, 487
479, 487, 491, 499, 503, 509, 521
509, 521, 523, 541, 547, 557, 563
557, 563, 569, 571, 577, 587, 593
587, 593, 599, 601, 607, 613, 617
613, 617, 619, 631, 641, 643, 647
643, 647, 653, 659, 661, 673, 677
673, 677, 683, 691, 701, 709, 719
709, 719, 727, 733, 739, 743, 751
743, 751, 757, 761, 769, 773, 787
773, 787, 797, 809, 811, 821, 823
821, 823, 827, 829, 839, 853, 857
853, 857, 859, 863, 877, 881, 883
881, 883, 887, 907, 911, 919, 929
919, 929, 937, 941, 947, 953, 967
953, 967, 971, 977, 983, 991, 997
991, 997, 1009, 1013, 1019, 1021, 1031
1021, 1031, 1033, 1039, 1049, 1051, 1061
1051, 1061, 1063, 1069, 1087, 1091, 1093
1091, 1093, 1097, 1103, 1109, 1117, 1123
1117, 1123, 1129, 1151, 1153, 1163, 1171
1163, 1171, 1181, 1187, 1193, 1201, 1213

1201, 1213, 1217, 1223, 1229, 1231, 1237

Nenhum comentário:

Postar um comentário