求两个数的最大公因数 (12 ,30 — 6)
int gcd(int a, int b)
{
return b==0?a:gcd(b, a%b);
}
有公因数的返回公因数
没有公因数返回 1
#include <cstdio>
#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;
int a1, a2, b1, b2, n;
double a, b, c;
char arr[10];
bool key = true;
int gcd(int a, int b)
{
return b==0?a:gcd(b, a%b);
}
int main(){
gets(arr);
int l=strlen(arr);
for(int i=0; i<l; i++){
if(arr[i]=='/') arr[i]=' ';
}
stringstream ss(arr);
ss >> a1 >> a2 >> b1 >> b2 >> n;
a = double(a1)/a2;
b = double(b1)/b2;
if(a>b){
double t;
t = a;
a = b;
b = t;
}
for(int i=1; ; i++){
double c = double(i)/n;
if(c>a&&c<b&&gcd(i,n)==1){
if(key) {
printf("%d/%d",i,n);
key = false;
}
else printf(" %d/%d",i,n);
}
if(c>b) break;
}
return 0;
}