¿Cómo resuelvo este problema de números primos?

Un numero especial es aquel primos tal que (numero primo)^2= (numero entero)^3+(numero entero)^3. Hallar la suma de los tres números primos especiales menores que 300

1 respuesta

Respuesta

·

·

A ver si me aclaro.

Un numero especial es un numero primo p tal que

p^2 = n^3 + m^3

¿Y qué teoría has dado para que te pongan este problema? Esto no es sencillo. En todo caso yo podría hacerlo con un programa de ordenador, de otra forma no sé.

Saludos.

:

:

Los tres números especiales que hay entre 1 y 300 son

3   ya que 3^2 = 1^3 + 2^3

13 ya que 13^2 = 8^3 + (-7)^3

181 ya que 181^2 = 105^3 + (-104)^3

Luego la suma es

3+13+181 = 197

Y este es el programa que he hecho, no explico nada a no ser que quieras saber algo.

program NumerosEspeciales;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
var
  limite, maximo,i,k,m,n,p: qword;
  j:int64;
  primo: boolean;
begin
  write('Hasta que numero calculamos? : ');
  readln(limite);
  i:=limite*limite;
  maximo:= trunc((-3+sqrt(9+12*(i-1))/6));
  writeln('Maximo: ',Maximo);
  for i:=1 to maximo do
      for j:=-i+1 to maximo do
          begin
               k:= i*i*i+j*j*j;
               m:= trunc(sqrt(k));
               if m*m=k then
                  begin
                       write(i:12,j:12,m:12);
                       if (m<2) or (m mod 2 = 0)then primo:=false else primo:=true;
                       if primo then
                          begin
                               n:=trunc(sqrt(m));
                               primo:=true;
                               p:=3;
                               while (p <= n) and primo do
                                  begin
                                     if m mod p = 0 then primo:= false;
                                     inc(p,2);
                                  end;
                          end;
                       if primo and (j>i) then
                          writeln('   PARA LUEGO')
                       else
                           if primo then
                              begin
                                 writeln('   SI');
                                 readln;
                              end
                           else
                              writeln ('   NO PRIMO');
                  end;
          end;
  writeln('FIN');
  readln;
end.

Aquí tienes el programa en Pascal: Programa números especiales

Está hecho para Lazarus FreePascal, para otro compilador a lo mejor hay que modificar algo. Incluye un ejecutable que no sé si funcionará en tu ordenador, puede que no e incluso tengo recuerdos que un antivirus que tenía consideraba que los ejecutables de FreePascal tenían virus.

Y eso es todo, si necesitas saber algo pregunta.

Saludos.

:

:

Valora la respuesta, me llevó mucho trabajo.

Saludos.

:

:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas