Estratto del documento

Codice C++

#include <iostream>

#include <fstream>

#include <vector>

#include <string>

#include <cmath>

using namespace std;

vector <int> primi;

string scomposizione;

bool is_perfect(unsigned long int);

string int_to_ascii(unsigned long int);

int main(){

//carica dell'elenco di numeri primi

unsigned int maxprimo;

ifstream inp_file("n_primi.txt", ios::out);

int temp;

for(;;){

inp_file >> temp;

if (inp_file.eof()) break;

primi.push_back(temp);

maxprimo = temp;

}

unsigned int i;

//controllo per n da 2 a maxprimo+1 se e' un numero perfetto...

unsigned long int n;

cout << "==> Numeri perfetti (fino a " << maxprimo+1 << "):\n";

for (n=2; n<=maxprimo+1; n++){

if (is_perfect(n)) cout << "--> " << n << " = " << scomposizione <<

endl; }

cout << "==> Ricerca terminata.\n==> Grazie per avere fatto uso "

<< "di questo programma\n";

return 0;

}

bool is_perfect(unsigned long int num){

scomposizione = "";

vector <vector <unsigned long int> > fattori;

// si decide che sara' di dimensioni Nx2, con:

// fattori[i][0] = fattore primo i-esimo

// fattori[i][1] = potenza con cui compare (1,2,...)

unsigned long int temp_n = num;

unsigned int i, j;

unsigned long int cur_fattore;

// scomposizione in fattori primi

unsigned long int preced_fattore;

scomposizione = "";

bool first = true; // flag per evitare un " * " prima del primo...

preced_fattore = 1;

do { cur_fattore = 1; // per rilevare la fine dell'operazione

// dopo il seguente for

for (i=0; i<primi.size(); i++){

cur_fattore = primi[i];

if ((temp_n/(cur_fattore*1.0))==(int)(temp_n/cur_fattore)) {

temp_n = temp_n/cur_fattore;

break;

Anteprima
Vedrai una selezione di 1 pagina su 3
Programma C++ - Numeri perfetti Pag. 1
1 su 3
Sintesi

Numeri perfetti C++

Il programma considera un numero intero (es.: 24) si può trovare l'elenco di tutti i suoi divisori (es.: 1, 2, 3, 4, 6, 8, 12). La loro somma è (qui) 36, che è diverso da 24. Se invece tale somma è uguale al numero stesso, il numero si dice perfetto.

D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi