Pagini recente » Cod sursa (job #2509480) | Cod sursa (job #805118) | Cod sursa (job #2504156) | Cod sursa (job #2612108) | Cod sursa (job #1557398)
#include <fstream>
#include <iostream>
#include <vector>
std::vector<int> factors;
bool isPrime(int x) {
for (int d = 2; d <= x / 2; ++d)
if (!(x % d))
return false;
return true;
}
void setFactors(int x) {
factors.clear();
for (int d = 2; d <= x / 2; ++d)
if (!(x % d) && isPrime(d))
factors.push_back(d);
if (x != 1)
factors.push_back(x);
}
bool isRelativelyPrime(int x) {
for (auto d : factors)
if (x % d == 0)
return false;
return true;
}
int gcd(int a, int b) {
int r = 0;
if (a < b)
std::swap(a, b);
while ((r = a % b)) {
a = b;
b = r;
}
return b;
}
int main() {
const char *inputFile = "fractii.in",
*outputFile = "fractii.out";
std::ifstream in(inputFile);
std::ofstream out(outputFile);
int n, nr = 0;
in >> n;
for (int i = 1; i <= n; ++i) {
setFactors(i);
for (int j = 1; j <= n; ++j)
if (isRelativelyPrime(j))
++nr, std::cout << i << "/" << j << " ";
}
out << nr;
return 0;
}