入门级选手,求教

going__ 2017-10-16 10:18:54
这题的思考怎样的?如何判断为无限循环小数啊?求大神指教!!!
...全文
173 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
大米粥哥哥 2017-10-17
  • 打赏
  • 举报
回复
a除b 或者b除a 有一个结果是整数
赵4老师 2017-10-17
  • 打赏
  • 举报
回复
自信男孩 2017-10-17
  • 打赏
  • 举报
回复
#include<stdio.h>
#include <stdbool.h>

bool check_denominator(int n)
{
    if(1 == n)
        return false;
    else if(0 == n % 2)
        return check_denominator(n/2);
    else if(0 == n % 5)
        return check_denominator(n/5);
    else
        return true;
}

int greatest_common_divisor(int a, int b)
{
    int common = b % a;
    while (common != 0) {
        b = a;
        a = common;
        common = b % a;
    }
    return a;
}


int main(){

    int a, b, n, ret = 1;
    int common;

    scanf("%d", &n);
    while (n--) {
        ret = scanf("%d%d", &a, &b);
        common = greatest_common_divisor(a, b);
        if (false == check_denominator(b/common))
            printf("Yes\n");
        else if(true == check_denominator(b/common))
            printf("No\n");
    }
    return 0;
}
分母只含有2或5的任意次方或者2与5结合的整数的分数都能化成有限小数 除此之外的分数都能化成无限循环小数 遇到问题,还是建议楼主多动手,多去查查资料。 遇到问题就直接请别人帮忙反而不好。请人帮忙是解决问题的一种方法,但是不是首选的,或者第一步做的。而应该是最后一步做的,前面的应该是自己在努力想办法解决问题。
paschen 2017-10-17
  • 打赏
  • 举报
回复
going__ 2017-10-17
  • 打赏
  • 举报
回复
引用 2 楼 cfjtaishan 的回复:
#include<stdio.h>
#include <stdbool.h>

bool check_denominator(int n)
{
    if(1 == n)
        return false;
    else if(0 == n % 2)
        return check_denominator(n/2);
    else if(0 == n % 5)
        return check_denominator(n/5);
    else
        return true;
}

int greatest_common_divisor(int a, int b)
{
    int common = b % a;
    while (common != 0) {
        b = a;
        a = common;
        common = b % a;
    }
    return a;
}


int main(){

    int a, b, n, ret = 1;
    int common;

    scanf("%d", &n);
    while (n--) {
        ret = scanf("%d%d", &a, &b);
        common = greatest_common_divisor(a, b);
        if (false == check_denominator(b/common))
            printf("Yes\n");
        else if(true == check_denominator(b/common))
            printf("No\n");
    }
    return 0;
}
分母只含有2或5的任意次方或者2与5结合的整数的分数都能化成有限小数 除此之外的分数都能化成无限循环小数 遇到问题,还是建议楼主多动手,多去查查资料。 遇到问题就直接请别人帮忙反而不好。请人帮忙是解决问题的一种方法,但是不是首选的,或者第一步做的。而应该是最后一步做的,前面的应该是自己在努力想办法解决问题。
谢谢你了,我自己也想了,但是没有头绪,所以来这里问你们
going__ 2017-10-17
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
谢谢你,其实我自己也想了好久,我找的资料说,例如m/n得来的小数,如果小数点后面位数大于n为则为无限小数,所以我就想来这里问问人

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧