blob: fd619c7af45fec7c34d4e7e471fdfe49f4bdc48b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <vector>
#include <iostream>
#include <numeric>
#include <utility>
#include <cstdlib>
#include <algorithm>
int main( int argc, char * argv[] ) {
int n = std::atoi( argv[1] ) ;
while ( n <= 0 ) {
std::cout << "Please enter an integer greater than 0!\n" ;
std::cin >> n ;
}
std::vector<int> numerators( n ) ;
std::vector<int> denominators( n + 1 ) ;
std::iota( numerators.begin( ) , numerators.end( ) , 1) ;
std::iota( denominators.begin( ) , denominators.end( ) , 0 ) ;
std::vector<std::pair<int, int>> fractions ;
fractions.push_back( std::make_pair( 0 , 1 ) ) ;
for ( int i : numerators ) {
for ( int j : denominators ) {
if ( i < j && (std::lcm( i , j ) == i * j)) {
fractions.push_back( std::make_pair( i , j )) ;
}
}
}
std::sort( fractions.begin( ) , fractions.end( ) ,
[]( const auto & a, const auto & b ) { return
(static_cast<double>(a.first) / static_cast<double>(a.second)) <
(static_cast<double>(b.first) / static_cast<double>(b.second));} );
for ( auto & p : fractions )
std::cout << p.first << '/' << p.second << ", " ;
std::cout << "1/1" << std::endl ;
return 0 ;
}
|