c语言最简分数问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 15:26:54
在0和1之间的所有分母不大于N的最简分数。下面是N=5时的情况:
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 l/1
程序对于一个给定的整数N(1<=N<=100),按从小到大的顺序打印出这些
分数。还应打印出它们的总数。在每个分数后面打印一个制表符,使他们在显示的时
候一行不会很长。
要求:当N<1或N>100时,程序应判错。
举例:
Enter the maximum demominator:5
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 l/1
There are 11 fractions.

问题 : C语言最简分数 

关键点 : 两个整数的最大公约数

解决方案 : 辗转相除法

具体实现 

#include <iostream>

using namespace std;

struct tp
{
    int a;
    int b;//分子
};
tp cc[10000];
int judge(int a,int b)//是否最简分数
{
    for(int i=2; i<b; i++)
    {
        if(b%i==0 && a%i==0)return false;
    }
    return true;
}
int sort(int n)//简单排序
{
    int i,j;
    tp k;
    for(i=0; i<n-1; i++)
    {
        for(j=i+1; j<n; j++)