Pagini recente » Cod sursa (job #2468670) | Cod sursa (job #2194567) | Cod sursa (job #2814213) | Cod sursa (job #1188441) | Cod sursa (job #1691247)
#include<iostream>
#include<algorithm>
#include<vector>
std::vector<long int> primesErastotene(long int number);
void printVector(std::vector<long int> vectorArray);
long int numberOfCoprime(long int number, std::vector<long int> primeArray);
int main()
{
std::cout << "Please enter the number.";
std::cout << "\nN= ";
long int n;
std::cin >> n;
std::vector<long int> primes;
primes = primesErastotene(n);
//printVector(primes);
long int maxNoOfFractions=0;
for (long int i = 1; i <=n; i++)
{
maxNoOfFractions += numberOfCoprime(i, primes);
}
std::cout << (2*maxNoOfFractions-1) << "\n\n";
return 0;
}
std::vector<long int> primesErastotene(long int number)
{
std::vector<bool> allNumbers(number, true);
std::vector<long int> primes;
//std::cout << nrFractii<<"\n";
//std::cout << "0\n\n";
for (long int i = 2; i < sqrt(number); i++)
{
int j;
j = i*i;
while (j < number)
{
allNumbers[j] = false;
j = j + i;
}
}
//std::cout << "1\n\n";
for (long int i = 2; i < number; i++)
{
if (allNumbers[i] == true)
{
primes.push_back(i);
//std::cout << i << std::endl;
}
}
return primes;
}
void printVector(std::vector<long int> vectorArray)
{
for (long int i=0; i < vectorArray.size(); i++)
{
std::cout << vectorArray[i]<<"\n";
}
}
long int numberOfCoprime(long int number,std::vector<long int> primeArray)
{
long int noOfCoprimes;
noOfCoprimes = number;
for (long int i = 0; primeArray.size(); i++)
{
bool coprime = true;
while (number%primeArray[i] == 0)
{
number = number / primeArray[i];
coprime = false;
}
if (coprime == false)
{
noOfCoprimes = noOfCoprimes*(1 - 1.0 / primeArray[i]);
}
if (number == 1)
{
break;
}
}
return noOfCoprimes;
}