Pagini recente » Cod sursa (job #2030534) | Cod sursa (job #1518235) | Istoria paginii runda/lot_alba/clasament | Cod sursa (job #1646887) | Cod sursa (job #1387627)
#include <iostream>
#include <climits>
#include <cmath>
#include <fstream>
#define MAX SHRT_MAX
using namespace std;
void init(int auxiliary[MAX], int n){
for (int i = 2; i <= n; i++){
auxiliary[i] = 1;
}
}
int prime_numbers(int n, int prime[MAX], int auxiliary[MAX]){
int index = 0;
int limit = sqrt(n);
for (int i = 2; i <= n; i++){
if (auxiliary[i] == 1){
if (i * i >= n){
prime[index++] = i;
continue;
}
prime[index++] = i;
for (int j = i*i; j <= n; j = j + i){
auxiliary[j] = 0;
}
}
}
return index;
}
int number_of_fractions(int n, int prime[MAX], int number_primes){
int contor = 0;
int part_contor = 0;
int index_prime;
for (int i = 2; i <= n; i++){
part_contor = i;
index_prime = 0;
while (prime[index_prime] <= i && index_prime < number_primes){
if (i % prime[index_prime] == 0){
cout << "\n" << "i = " << i << " prime[ind]= " << prime[index_prime]<< "\n";
part_contor *= (prime[index_prime]-1);
part_contor /= prime[index_prime];
}
index_prime++;
}
cout << part_contor << "\n";
contor += part_contor;
}
return (contor * 2 + 1);
}
int main(void){
int auxiliary[MAX];
int prime[MAX];
int number_primes = 0;
int result = 0;
int n;
ifstream in;
ofstream out;
in.open("fractii.in");
out.open("fractii.out");
in >> n;
init(auxiliary, n);
number_primes = prime_numbers(n, prime, auxiliary);
for (int i = 0; i < number_primes; i++)
cout << prime[i] << " ";
result = number_of_fractions(n, prime, number_primes);
cout << "\n" << result;
out << result;
in.close();
out.close();
}