问题描述

按递增顺序依次列出所有分母为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. vm12pro 安装winxp过程 记录1(涵个人问题)

    1.百度的xp资源 选好iso文件后出现如下情景: 2.百度以后是要在一开始的首次界面就选择从哪个盘开始 3.选择了“Windowgs PE”选项…加载出界面后选择了ghost xp…现在…黑屏了…… ...

  2. go接口

    // 接口例子package main import "fmt" type Human struct { Name string Age int Sex string Phone ...

  3. Python之简单验证码实现

    def v_code(): ret = '' for i in range(5): num = random.randint(0,9) alf = chr(random.randint(65,122) ...

  4. C++中的基础特性:封装,继承,多态

    抽象: 要将现实中的一个具体事务,变成C++中的一个类,例如将现实中的汽车变成代码中的car类.完成这个过程就需要 抽象 这一基本手段. 抽象是指 对具体问题(对象)进行分析概括,找出该类对象的公共性 ...

  5. SQL中Union和Union All

    工作中,看到大佬写的一段SQL,查询了五个表中的数据,最后求某个收入的总和,其中使用了Union All,因此在这里记录一下我从中学到的东西 先上语法 Union:   [ Select语句1 ] U ...

  6. 实验三 CC2530平台上CC2530平台上定时器组件的

    实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS ...

  7. java项目---用java重命名文件(1星)

    package Demo; import java.io.File; public class FileRename { public static boolean Rename(String old ...

  8. OSI七层网络模型浅析

    OSI七层网络模型(从下往上): 物理层(Physical):设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的 环境.可以理解为网络传输的物理媒体部分,比如网卡,网线,集线器,中继器,调 ...

  9. 【爬虫】如何用python+selenium网页爬虫

    一.前提 爬虫网页(只是演示,切勿频繁请求):https://www.kaola.com/ 需要的知识:Python,selenium 库,PyQuery 参考网站:https://selenium- ...

  10. JAVA工具类-StrUtils

    public class StrUtils { public static final String UTF_8 = "UTF-8"; /** * 去掉小数字符串后面无用的零 */ ...