当我试图找到答案时,我遇到了这个问题,并想知道这是不是真的,为什么是。
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)
,即a
、b
整数、r
和s
正整数,n
和m
非负整数的问题。
CCD_ 11相当于CCD_。a/(r^n)
恰好等于终止分数的某个基数s
,当且仅当存在正整数m
使得a*(s^m)/(r^n)
是整数。
考虑r
、PROD(p[i]^k[i])
的素因子分解。如果对于某些i
,p[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的一个因子。那么对于足够大的m
,p[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=10
和s=2
的常见情况,r
的素因子分解为(2^1)*(5^1)
。2是2的因子,所以我们可以忽略它。5不是,所以我们需要5^n
是a
的因子。
考虑一些具体情况:
小数0.1
是1/10
,5不是1的因子,所以不存在精确的二进制分数等价。
十进制0.625
、625/(10^3)
。5^3
是125,这是625的一个因子,因此存在一个精确的二进制分数等价。(二进制0.101)。
参考答案中的方法https://stackoverflow.com/a/489870/5712298相当于十进制到二进制。它需要一些工作来扩展到一般情况,以允许指数不为1的素因子。