关于确定十进制数在基数中是否具有有限表示的说明



当我试图找到答案时,我遇到了这个问题,并想知道这是不是真的,为什么是。

https://stackoverflow.com/a/489870/5712298

如果有人能向我解释,或者把我链接到一个解释页面,那就太好了。

Stackoverflow标记不太支持数学表示法,大多数读者都是程序员,所以我将使用常见的编程表达式语法:

* multiplication
^ exponentiation
/ division
x[i] Element i of an array x
== equality
PROD product

本文讨论了给定一个基数r终止部分a/(r^n),是否存在一个值完全相同的终止基数s部分b/(s^m),即ab整数、rs正整数,nm非负整数的问题。

CCD_ 11相当于CCD_。a/(r^n)恰好等于终止分数的某个基数s,当且仅当存在正整数m使得a*(s^m)/(r^n)是整数。

考虑rPROD(p[i]^k[i])的素因子分解。如果对于某些ip[i]^k[i]r的素因子分解中的项,则p[i]^(n*k[i])r^n的素因子因子分解中。

a*(s^m)/(r^n)是整数当且仅当,在r^n的素因子分解中的每个p[i]^(n*k[i])也是a*(s^m)的因子

首先假设CCD_ 28也是CCD_ 29的一个因子。那么对于足够大的mp[i]^(n*k[i])s^m的因子。

现在假设p[i]不是s的因子。p[i]^(n*k[i])a*(s^m)的因子,当且仅当,它是a的因子。

存在非负整数m使得b==a*(s^m)/(r^n)是整数的充要条件是,对于r的素因子分解中的每个p[i]^k[i]p[i]s的因子,或者p[i]^(n*k[i])a的因子。

将此应用于r=10s=2的常见情况,r的素因子分解为(2^1)*(5^1)。2是2的因子,所以我们可以忽略它。5不是,所以我们需要5^na的因子。

考虑一些具体情况:

小数0.11/10,5不是1的因子,所以不存在精确的二进制分数等价。

十进制0.625625/(10^3)5^3是125,这是625的一个因子,因此存在一个精确的二进制分数等价。(二进制0.101)。

参考答案中的方法https://stackoverflow.com/a/489870/5712298相当于十进制到二进制。它需要一些工作来扩展到一般情况,以允许指数不为1的素因子。

相关内容