精华内容
下载资源
问答
  • 遇到一道算法题,大概是求两数相除(输入两个数,分数形式相除)...那么如何判断两数相除后小数部分为无限循环小数或者为有限小数? 答:当除数(分母)只有2或者5这两个质因数时,就是有限小数;当除数(分母)含...

    遇到一道算法题,大概是求两数相除(输入两个数,分数形式相除)后,结果的小数部分的数的规律,需要了解相关数学的基本知识。

    无理数不可以写成分数形式,而无限不循环小数是无理数,所以无限不循环小数不可以写成分数形式,所以就不需要考虑小数部分是无限不循环小数了。

    那么如何判断两数相除后小数部分为无限循环小数或者为有限小数?

    答:当除数(分母)只有2或者5这两个质因数时,就是有限小数;当除数(分母)含有2和5以外的质因数时就是无限循环小数

    展开全文
  • n≤1000),判断分数m/n是有限小数还是循环小数。 如果m/n是有限小数,则输出分数的值;如果m/n为循环小数,则把循环部分括在括号中,并打印输出。 代码: #include<stdio.h> bool f(int n) //判断是否是有限还是...

    问题
    读人自然数m和n(0≤m<n≤1000),判断分数m/n是有限小数还是循环小数。
    如果m/n是有限小数,则输出分数的值;如果m/n为循环小数,则把循环部分括在括号中,并打印输出。

    代码:

    #include<stdio.h>
    
    bool f(int n)	//判断是否是有限还是循环
    {
    	if (n == 1)
    		return true;
    	else if(n%2==0)
    	{
    		f(n / 2);
    	}
    	else if(n%5==0)
    	{
    		f(n / 5);
    	}
    	else
    	{
    		return false;
    	}
    }
    int gcd(int x, int y)
    {
    	int r;
    	while (x % y)
    	{
    		r = x % y;
    		x = y;
    		y = r;
    	}
    	return y;
    }
    bool find(int *yu,int y)//判断是否找到循环节
    {
    	int i;
    	for (i = 0; i < y-1; i++)
    	{
    		if (yu[y - 1] == yu[i])
    		{
    			return false;		//找到了,跳出循环
    		}
    	}
    	return true;
    }
    void main()
    {
    	int m, n;
    	double d;
    	int x = 0, y = 0, flag, i, gcd0;
    	int zheng, xiao[100] = { 0 }, yu[100] = { 0 }, r, s;
    	puts("请输入自然数m,n(0<=m<n<=1000)");
    	scanf("%d %d",&m,&n);
    	gcd0 = gcd(m, n);
    	m = m / gcd0;
    	n = n / gcd0;		//化为最简分数
    	if (f(n))
    	{
    		d = m*1.0 / n;
    		printf("有限小数:%lf",d);
    	}
    	else
    	{
    		zheng = m / n;
    
    		r = m;
    		s = r * 10 / n;		//第一组
    		xiao[x++] = s;
    		yu[y++] = r;		//存入第一组数据
    
    
    
    		while (find(yu,y))
    		{
    			r = (r * 10) % n;
    			s = r * 10 / n;
    			xiao[x++] = s;
    			yu[y++] = r;
    
    		}
    		for (i = 0; i < y - 1; i++)
    		{
    			if (yu[y - 1] == yu[i])
    			{
    				flag = i;
    			}
    		}
    		printf("循环小数:%d.",zheng);
    		
    		for (i = 0; i < flag; i++)
    		{
    			printf("%d", xiao[i]);		//打印不循环小数部分
    		}
    		printf("(");
    		for (i = flag; i < y - 1; i++)
    		{
    			printf("%d",xiao[i]);		//打印循环小数部分
    		}
    		printf(")");
    
    	}
    

    题目给定了n>m,若m>n,程序可能有点问题,以后有时间再改进。

    展开全文
  • 根据数学知识可知,两整数之商,如果除不尽,将必为有限小数无限循环小数。所以退出循环的条件某一次除法后为余数为0或者余数循环。 以3/5为例。 步骤 Value 1 3/5=0……3 2 30/5=6……0 此时余数为0...

    仅记录作业过程遇到的值得一记的问题

    题干

    在这里插入图片描述

    解题思路

    将笔算中竖式除法的每一步分解还原。
    基本流程为:m/n得商和余数,再将余数乘以10,作为下一次的除法中的被除数,除以n,以此循环。根据数学知识可知,两整数之商,如果除不尽,将必为有限小数或无限循环小数。所以退出循环的条件某一次除法后为余数为0或者余数循环。
    以3/5为例。

    步骤 Value
    1 3/5=0……3
    2 30/5=6……0

    此时余数为0,退出循环,0.6为其解,3/5结果是有限小数。
    以1/7为例子

    步骤 Value
    1 1/7=0……1
    2 10/7=1……3
    3 30/7=4……2
    4 20/7=2……6
    5 60/7=8……4
    6 40/7=5……5
    7 50/7=7……1

    此时余数与第一位余数相同,且余数开始循环,则循环节为(142857).

    代码

    #include<stdio.h>
    #define N 1000
    
    int main() {
    	int i, j, k, start, end;
    	int m, n;
    	int div[N], mod[N];
    	int flag = 0;
    	scanf("%d %d", &m, &n);
    	div[0] = m / n;
    	mod[0] = m % n;
    	i = 0;
    	while (flag == 0) {
    		i += 1;
    		div[i] = mod[i - 1] * 10 / n;
    		mod[i] = mod[i - 1] * 10 % n;
    		if (mod[i] == 0) {
    			flag = 1;
    			start = 1;
    			end = i;
    		}
    		else {
    			for (j = 1; j < i; j++) {
    				if (mod[i] == mod[j]) {
    					flag = 2;
    					start = j;
    					end = i;
    				}
    			}
    		}
    	}
    
    	if (flag == 1) {
    		printf("%d.", div[0]);
    		for (k = start; k <= end; k++) {
    			printf("%d", div[k]);
    		}
    		printf("\n");
    	}
    	if (flag == 2) {
    		printf("(");
    		for (k = start; k < end; k++) {
    			printf("%d", div[k]);
    		}
    		printf(")\n");
    	}
    	return 0;
    }
    
    

    运行结果

    在这里插入图片描述

    展开全文
  • 例如:1/2,1/8,1/20,5/32,9/40就可以化成有限小数.1/3,1/14,9/55,8/21只能化成无限循环小数.3.码代码# -*- coding: utf-8 -*-from fractions import Fraction#判断一个数的因数是否包含2或者...

    1.读题

    9ba50f6bf55b5920c0915380e53c2131.png

    2.思考

    一个最简分数,分母如果只包含2和5的因数就可以化成有限小数.如果含有2和5以外的因数就只能化成无限循环小数.

    例如:1/2,1/8,1/20,5/32,9/40就可以化成有限小数.

    1/3,1/14,9/55,8/21只能化成无限循环小数.

    3.码代码# -*- coding: utf-8 -*-

    from fractions import Fraction

    #判断一个数的因数是否包含2或者5

    def judge_num(in_num):

    l = []

    while in_num > 1:

    for i in range(2, in_num+1):

    if in_num % i == 0:

    in_num = in_num // i

    l.append(str(i))

    break

    for x in l:

    if x!='2' and x!='5':

    return False

    else:

    return True

    #判断数据类型与被除数

    def error(in_num1, in_num2):

    if isinstance(in_num1, int) and isinstance(in_num2, int):

    if in_num2!=0:

    return in_num1, in_num2

    else:

    return False

    else:

    return int(in_num1),int(in_num2)

    #除法程序

    def divi(num1, num2):

    res = Fraction(num1,num2)

    fm = res.denominator #得到最简式分母

    if judge_num(fm):

    print(num1/num2)

    else:

    print(res)

    a,b =map(int,input('输入除数,被除数并用空格隔开:').split())

    if error(a, b):

    divi(error(a,b)[0],error(a,b)[1])

    else:

    print('被除数不能为零,请重新输入')<

    4.看结果

    e2eb1dfacf2d947e3fbcc97e87af6bad.png

    展开全文
  • 判断1/n是否为无限小数

    千次阅读 2019-09-28 12:38:46
    原理: 只要被除数n可以转化为2的次幂或者转化为2与...即为有限小数 否则无限小数 bool iint(int n) { if(n==1) return false; else if(n%2==0) { return iint(n/2); } else if(n%5==0) { return iint(n/5);...
  • 分母只含有2或5的任意次方或者2与5结合的整数的分数都能化成有限小数 除此之外的分数都能化成无限循环小数 #include bool f(int n){ if(1==n)return false; else if(0==n%2){ return f(n/2); } else if(0=...
  • 例如:1/2,1/8,1/20,5/32,9/40就可以化成有限小数.1/3,1/14,9/55,8/21只能化成无限循环小数.3.码代码# -*- coding: utf-8 -*-from fractions import Fraction#判断一个数的因数是否包含2或者...
  • ①若一个分数的分子为1,如1/a=x(x为有限位的小数) 则可把x化为分母为10^n,分子为x×10...即a=2^i·5^j(i,j都大于等于0)时,1/a就为有限小数   反之,若a的因子中还有不是2和5的其他数,则分数1/a为无限循...
  • 小数转为分数

    2019-12-09 18:36:27
    从实验报告中选取出来的比较有意思的问题: 从键盘输入分子b和分母a,判断该分数(真分数)...3/8 = 0.375 //小数点不超过7位(有限小数) 1/3 = 0.333333…//从1位开始出现无限循环 1/7 = 0.142857 142857 14...
  • 我们知道,在数学上,当a, b都为正整数时,a/b必然是有理数(有限或者循环),那如何判断a/b是有限还是无限循环呢?程序如下: #include using namespace std; int gcd(int x, int y) { int r; while( x % y) {...
  • 上文链接:蓝桥杯之分考场-深度优先遍历(DFS)+简单逻辑判断简化版(c++实现)资源限制时间限制:1.0s 内存限制:256.0MB问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。 如果我们把...
  • 有理小数分为有限小数无限循环小数 1. 有限小数有限小数直接去小数点再约分即可。 例:1.55=155100=31201.55=\dfrac{155}{100}=\dfrac{31}{20} 2. 无限循环小数: 先判断循环节长度nn,原小数aa乘以10n10^...
  • 上文链接:蓝桥杯之分考场-深度优先遍历... 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。 输入格式  一行三个整数:a...
  • 某些人仍然根据有限小数的经验,认为,0.99…不等于1。他们认为,0.99…虽然是无限小数,但是有最后一位,就是在无穷远处的那一位,因此0.9循环可以写成0.99…9,显然它与1差了0.00…1,小数点后无穷个0,最后跟了个...
  • 编者按:某些人仍然根据有限小数的经验,认为,0.99...不等于1。他们认为,0.99...虽然是无限小数,但是有最后一位,就是在无穷远处的那一位,因此0.9循环可以写成0.99...9,显然它与1差了0.00...1,小数点后无穷个0...
  • 能确保浮点数运算不丢失精度**我们知道计算机编程语言里浮点数计算会存在精度丢失问题(或称舍入误差),其根本原因是二进制和实现位数限制有些数无法有限表示*以下是十进制小数对应的二进制表示*0.1>>0....
  • 无名定理(分数小数互化,判断是否是有限小数无限循环小数):一个分数如果它的分母是10^n(n是含零自然数),就可以直接写成整数或有限小数;而一个有限小数化成分数,第一步就是将其分母写成...
  • 例如0.123450.12345是有限小数,1/3,Π是无限小数。 给你一个正整数n,请你判断1/n是否为有限小数,如果是输出"YES",否则输出"NO"(不包含引号) 思路 最后只过了14个(有两个还是在大佬的提示下才过的,可耻),...
  • 983A Finite or not?

    2018-05-17 15:13:57
    题意:判断一个分数在某一进制下是否为无限小数。题解:首先把这个分数约分,然后便是判断。,一个分数是否为无限小数,与分子是无关的,只与分母有关。然后,再来看看10进制的分数,可化为有限小数的特点,10为分母...
  • 简单数论

    2021-01-21 17:06:49
    简单数论 判断1/n是否是无限循环小数 思路:n的因子全为2和5是有限,否则为无限
  • 传送门 题意:给你T组数据,一组数据中有p,q,b。判断p/g在b进制下有限还是无限。 思路:看了很多组题解,什么质因子把我搞的一头雾水,咱不那么高大上,简单分析...首先:p/g如果是有限小数的话,那么与p是无关的...
  • 判断一个分数在某一进制下是否为无限小数。 思路: 首先把这个分数约分,然后便是判断。 首先,一个分数是否为无限小数,与分子是无关的,只与分母有关。 然后,再来看看10进制的分数,可化为有限小数的特点,10...
  • 最好用分数来表示小数,有限小数无限循环小数都可以转化为分数,无限循环小数的循环节用括号标记出来。如: 0.9 = 9/10 0.(3) = 0.3(3) = 0.3(33) = 1/3 当然一个小数可以用好几种分数形式来表示,我们只感兴趣最...
  • 哈喽,大家好!我们又见面了,欢迎继续关注【轩爸辅导】的【口袋数学】。日更【每日一学】【每日一练】,帮助孩子日积月累,考出好的成绩。...02 知识要点归纳要点一、有理数与无理数有限小数无限循环小数都称为...
  • 最好用分数来表示小数,有限小数无限循环小数都可以转化为分数,无限循环小数的循环节用括号标记出来。如: 0.9 = 9/10 0.(3) = 0.3(3) = 0.3(33) = 1/3 当然一个小数可以用好几种分数形式来表示,我们只感兴趣最...
  • 题意:每次给次p,q,b三个数字,然后让你判断p/q在b进制下是不是无限小数 分析:先把p/q化成最简形式,然后只需要q的所有质因子都在b中出现,就一定可以表示成x/(b^k)这样的形式,就一定是有限小数。 AC代码: ...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

判断有限小数无限小数