Números de Mersenne y números perfectos

Pablo Palacios Herrero

/*Este programa escribe por pantalla los números de Mersenne,
que son los números de la forma 2^n-1. Detecta cuáles de
ellos son primos y produce el número perfecto asociado. */

#include <stdio.h>
#include <math.h>
#define MAX 30

int es_primo(int x);

int main()
{
double m[MAX],p;
int i;

for(i=1;i<=MAX;i++)
{
m[i]=pow(2,i)-1;
printf (“\n\nEl %d numero de Mersenne es %.0lf”,i, m[i]);
if(es_primo(m[i])==1)
{
p=pow(2,i-1)*m[i];
printf(“, \nque es primo y produce el numero perfecto %.0lf”,p);}
else printf(“, \nque NO es primo y no produce numeros perfectos”);
}

return 0;
}

int es_primo(int i)
{
unsigned int j;
double x;

if (i%2 == 0)
{
if (i==2) return 1;
else return 0;
}
else
{
x=sqrt(i);
j=3;
while ((j<=x) && (i%j!=0))
{
j=j+2;
}
if (j>x) return 1;
else return 0;
}

}

Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s