问题描述

按递增顺序依次列出所有分母为60,分子小于60的最简分数。

问题分析

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

方法一:

求分子小于60的最简分数,对分子采用穷举的方法。根据最简分数定义知:分子分母的最大公约数为1,利用最大公约数的方法,判定分子与60是否构成真分数。

方法二:

分子、分母的公因数只有1的分数为最简分数,若分子、分母在1〜分子(num2)(题目要求分子小于60,分子、分母的公约数小于两者中的任意一个)之间除了1之外还有其他的公因数,则此分数肯定不是最简分数。

算法分析

变量num1、num2分别存储分母、分子的值。

方法一:

求最大公约数一般采用辗转相除的思想,具体步骤如下。 1. 用较大的数num1除以较小的数num2,得到的余数存储到变量temp中,temp=num1%num2。

2. 上一步中较小的除数num2和得出的余数temp构成新的一对数,并分别赋值给num1和num2,继续做上面的除法。

3. 当num2为0时,num1就是最大公约数,否则重复步骤 1、2。

方法二 :

分数的分子仍然采用穷举法。对于每一个可能的分子,都要判断在1〜num2范围内,分数num1/num2除了1之外是否有其他的公因数,循环初值为2。

在2〜num2内若有一个数j能同时整除分子、分母,说明此分数不是最简分数,j〜num2之间的数也无须再判断,利用break语句结束循环。循环结束时j<num2。循环过程中若没有一个数可以同时整除分子、分母即条件if(num1%j==0 && num2%j==0)不成立,则break语句不执行,循环正常结朿,即条件j<=num2不成立,循环结束时j>num2。利用j与num2的大小关系可判断分数是否为最简分数。

下面是方法一的完整程序:

#include<stdio.h>
int main()
{
int i, num1, num2, temp, n=; /*n记录最简分数的个数*/
printf("分母是60的真分数有:\n");
for(i=; i<; i++) /*穷举60以内的全部分子*/
{
num1 = ;
num2 = i;
/*采用辗转相除法求出最大公约数*/
while(num2 != )
{
temp = num1 % num2;
num1 = num2;
num2 = temp;
}
if(num1 == ) /*若最大公约数为1,则为最简真分数*/
{
n++;
printf("%2d/60 ", i);
if(n% == ) /*每行输出8个数*/
printf("\n");
}
}
return ;
}

下面是方法二的完整代码:

#include<stdio.h>
int main()
{
int i, num1, num2, j, n=; /*记录最简分数的个数*/
printf("The fraction serials with demominator 60 is:\n");
for(i=; i<;i++) /*穷举60以内的全部分子*/
{
num1 = ;
num2 = i;
for(j=;j<=num2; j++)
/*判断2~num2之间分子、分母是否有公约数,如果有j满足条件,则结束循环,说明此时的分数不是最简分数*/
if(num1%j== && num2%j==)
break;
if(j>num2)
/*若j>num2说明2~num2之间没有分子、分母的公约数,分数为最简分数*/
{
printf("%2d/60", i);
n++;
if(n% == )
printf("\n");
}
}
return ;
}

输出结果:

分母是60的真分数有:
/ / / / / / / /
/ / / / / / / /

C语言列出真分数序列代码及解析的更多相关文章

  1. C语言cJSON库的使用,解析json数据格式

    C语言cJSON库的使用,解析json数据格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html 对于c语言来说是没有字典这样的结构的,所以对于解析 ...

  2. 《编译原理》画 DAG 图与求优化后的 4 元式代码- 例题解析

    <编译原理>画 DAG 图与求优化后的 4 元式代码- 例题解析 DAG 图(Directed Acylic Graph)无环路有向图 (一)基本块 基本块是指程序中一顺序执行的语句序列, ...

  3. 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)

    原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...

  4. Java打印整数的二进制表示(代码与解析)

    Java打印整数的二进制表示(代码与解析) int a=-99; for(int i=0;i<32;i++){ int t=(a & 0x80000000>>>i)&g ...

  5. 编程算法 - 和为s的连续正整数序列 代码(C)

    和为s的连续正整数序列 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个正数s, 打印出全部和为s的连续正数序列(至少含有两个数). 起 ...

  6. Tinyhttpd - 超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client(Qt也有很多第三方HTTP类)

    - 2. Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Htt ...

  7. 人脸跟踪开源项目HyperFT代码算法解析及改进

    一.简介 人脸识别已经成为计算机视觉领域中最热门的应用之一,其中,人脸信息处理的第一个环节便是人脸检测和人脸跟踪.人脸检测是指在输入的图像中确定所有人脸的位置.大小和姿势的过程.人脸跟踪是指在图像序列 ...

  8. NSGA,NSGA-II,Epsilon-MOEA,DE C语言Deb教授原版代码

    NSGA,NSGA-II,Epsilon-MOEA,Basic Differential Evolution (DE) C语言Deb教授原版代码地址 觉得有用的话,欢迎一起讨论相互学习~[Follow ...

  9. c语言心形告白代码实现

    c语言心形告白代码实现 1.彩色告白 include<stdio.h> include<math.h> include<windows.h> include< ...

随机推荐

  1. seriviceWorker 小结

    serviceWorker 的状态 install → activate. 1.初进页面,此前未加载过serviceWorker,直接进入install状态,随后进入activate状态,但是此时se ...

  2. js Number string

    Number string number Js只有一种数字类型(包括整型,浮点型) 极大或极小的可用科学计数法来表示.(7.7123e+1) 所有js数字均为64位 Js所有的数字都存储为浮点型 小数 ...

  3. python 编写登陆接口

    #!/usr/bin/env python#_*_ coding:utf-8 _*_dic={ 'yts':{'password':'123','count':0}, 'nick':{'passwor ...

  4. load data local to table

    步骤: 1.使用show语句查找服务器上当前存在的数据库: 2.如果数据库存在,尝试访问它,之后创建表(我这里是之前创建的,所以就直接show tables) 3.将本地文件加载到表中,创建一个文本文 ...

  5. 关于python的装饰器(初解)

    在python中,装饰器(decorator)是一个主要的函数,在工作中,有了装饰器简直如虎添翼,许多公司面试题也会考装饰器,而装饰器的意思又很难让人理解. python中,装饰器是一个帮函数动态增加 ...

  6. 在linxu机器ansible上运行启动django项目命令

    source py3env/bin/activate  进入虚拟环境 cd /xiangmulujing     进入项目路径 然后就可以执行运行命令了 python manage.py runser ...

  7. 使用 opendistro for elasticsearch 做为graylog的后端存储

    graylog 是一个很不错的日志分析.收集.报警平台,包好了丰富的插件,同时内部的架构设计很不错 input 组件很多,使用stream.pipeline可以方便的进行数据处理,可以同时3.0 对于 ...

  8. DevExpress GridControl控件行内新增、编辑、删除添加选择框

    以下为内容以图片居多1234表示点击顺序 先新增一行 操作和新增数据行一样 打开ColumnEdit  选择new ButtenEdit  new上方会出现一个系统命名的button 命名可以更改必须 ...

  9. java8_api_net

    网络编程1    操作ip地址        核心类 InetAddress        相关方法 getByName,getAllByName,getLocalHost    操作socket地址 ...

  10. delphi 多线程之System.TMonitor

    三天不写代码就手生! 把测试代码记录下来. unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, S ...