打卡 c语言趣味编程 列出真分数序列

发布时间 2023-05-24 21:22:07作者: 起名字真难_qmz

问题描述:
  按递增顺序依次列出所有分母为40,分子小于40的最简分数。

  分子、分母只有公因数1的分数叫做最简分数或者说分子和分母是互质数的分数,叫做最简分数,又称既约分数,如2/3,8/9,3/8等。

思路:

  求分子小于40的最简分数,对分子采用穷举的方法。根据最简分数定义知:分子分母的最大公约数为1,利用最大公约数的方法,判定分子与40是否构成真分数。变量numl、num2分别存储分母、分子的值。求最大公约数一般采用辗转相除的思想,具体步骤如下。(1)用较大的数numl除以较小的数num2,得到的余数存储到变量temp中,temp=numl%num2.(2)上一步中较小的除数num2和得出的余数temp构成新的一对数,并分别赋值给numl和num2,继续做上面的除法。(3)当num2为0时,um1就是最大公约数,否则重复步骤(1)、(2)。

流程图:

代码实现:

 1 #include<stdio.h>
 2 using namespace std;
 3 int main(){
 4 
 5     int i,numl,num2,temp,n=0;
 6 /*n记录最简分数的个数*/
 7 
 8     cout<<"分子小于40的所有最简分数为: "<< endl;
 9     for(i=1;i<40;i++)
10     /*穷举40以内的全部分子*/
11     num1=40;
12     num2=i;
13     /*采用辗转相除法求出最大公约数*/
14     while(num2!=0){
15     temp=num1%num2;
16     num1=num2;
17     num2=temp;
18     }
19     if(num1==1){
20     n++;
21     cout << i << "/40   "
22     if(n8=0)
23         cout << endl;
24 }