0votos

Números perfectos en Haskell

por josejuan hace 2 meses

A lo bruto necesitamos más de dos minutos para obtener los seis primeros.

Encontrar números perfectos entre 0 y 10000. En lenguaje C.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h> 
 
int main(int argc, char **argv) { 
  int p[] = {2, 3, 5, 7, 11, 13, 17}; 
  for(int i = 0; i < 7; i++) { 
    unsigned long int n = (1UL << (p[i] - 1)) * ((1UL << p[i]) - 1), s = 0, d = 0; 
    while(++d < n && s <= n) if(n % d == 0) s += d; 
    if(s == n) printf("%lu\n", n); 
  return 0; 
 
 
/* 
 
[josejuan@centella Solveet]$ gcc -O3 perfectos.cc && crono ./a.out 
28 
496 
8128 
33550336 
8589869056 
Mem: 1432 kbytes. Time: 2:18.11 
 
*/ 
2 comentarios

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.