Ir para o conteúdo

Primalidade dos números 2n^2-1 (Euler, 216)

Nota: Considere os números \(t(n)\) da forma \(t(n)=2n^2-1\) onde \(n>1\). Os primeiros números do género são 7, 17, 31, 49, 71, 97, 127 e 161. Constata-se que apenas \(49=7*7\) e \(161=7*23\) não são primos. Para \(n\leq10000\) existem 2202 números \(t(n)\) que são primos.

Quantos números \(t(n)\) são primos para \(n\leq50~000~000\)?

in Project Euler, problem 216

program euler_216;

function isPrime(n : longword) : boolean;
var i : longword;
begin
   isPrime := true;
   for i:=2 to trunc(sqrt(n)) do
      if n mod i = 0 then begin
         isPrime := false;
         break;
      end;
end;

function t(n : longword) : longword;
begin
   t := 2 * sqr(n) - 1;
end;

var count : longword = 0;
    i : longword;
const MAX = 50000000;

begin
   for i:=2 to MAX do
      if isPrime(t(i)) then
         inc(count);
   writeln(count);
end.