Brasa
Utente Attivo
- Messaggi
- 192
- Reazioni
- 19
- Punteggio
- 38
Ciao a tutti e buon Ferragosto! :party:
Premetto che quello che ho imparato sul C proviene da libri e guide, quindi abbiate pazienza se mi porto dietro alcuni errori... Ma ora andiamo al punto della situazione. Sto scrivendo un programma (in C appunto) con lo scopo di calcolare i numeri primi di Mersenne (ovvero i numeri primi risultanti da 2^n -1, se ho capito bene), con il problema che oltre 2^63 -1 inizia a printare il numero 0 (ovviamente). La domanda viene da se, come posso superare questo limite? Ho già cercato su google in tutte le lingue ma non ho capito molto... vi sarei infinitamente grato se potreste aiutarmi.
Scusate se ho incluso headers inutilizzati, grazie anticipatamente e di nuovo buon Ferragosto! :)
P.s. Ora mi accorgo che alcuni numeri non sono primi tra quelli che vengono printati... :look:
Premetto che quello che ho imparato sul C proviene da libri e guide, quindi abbiate pazienza se mi porto dietro alcuni errori... Ma ora andiamo al punto della situazione. Sto scrivendo un programma (in C appunto) con lo scopo di calcolare i numeri primi di Mersenne (ovvero i numeri primi risultanti da 2^n -1, se ho capito bene), con il problema che oltre 2^63 -1 inizia a printare il numero 0 (ovviamente). La domanda viene da se, come posso superare questo limite? Ho già cercato su google in tutte le lingue ma non ho capito molto... vi sarei infinitamente grato se potreste aiutarmi.
Codice:
#include <stdio.h>#include <math.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
#include <inttypes.h>
#include <malloc.h>
#include <memory.h>
#include <mem.h>
int IsPrime(unsigned int number) {
if (number <= 1) return 0;
unsigned int i;
for (i=2; i*i<=number; i++) {
if (number % i == 0) return 0;
}
return 1;
}
int main(){
int n = 2, x, check;
unsigned long long int result;
for(x = 1; x <= 63; ++x){
result = pow(2, n) - 1;
check = IsPrime(result);
if(check = 1){
printf("%llu is prime\n",result);
}
++n;
}
}
Scusate se ho incluso headers inutilizzati, grazie anticipatamente e di nuovo buon Ferragosto! :)
P.s. Ora mi accorgo che alcuni numeri non sono primi tra quelli che vengono printati... :look:
Ultima modifica: