Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Modulo 分数模运算_Modulo - Fatal编程技术网

Modulo 分数模运算

Modulo 分数模运算,modulo,Modulo,我被困在这个密码问题上,使用整数和分数的乘法mod 10 以下是方程式: 7 * (4/11) mod 10 =? 我知道我应该把它转换成一个整数,因为mod运算符不能处理分数,但是我不能理解这个。显然, 7 * (4/11) = 28/11, 但是我不能得到分数的mod 10。讲师想要的是准确的答案,而不是小数点。任何帮助都将不胜感激 请看这里:“打开” 定义模块化函数的一种自然方法是 a(模b)=a− B⌊a/b⌋ 在哪里⌊⋅⌋ 表示的是。这是格雷厄姆、克努特、帕塔什尼克在这本颇具影响力

我被困在这个密码问题上,使用整数和分数的乘法mod 10

以下是方程式:

7 * (4/11) mod 10 =?
我知道我应该把它转换成一个整数,因为mod运算符不能处理分数,但是我不能理解这个。显然,

7 * (4/11) = 28/11,
但是我不能得到分数的mod 10。讲师想要的是准确的答案,而不是小数点。任何帮助都将不胜感激

请看这里:“打开”

定义模块化函数的一种自然方法是

a(模b)=a− B⌊a/b⌋

在哪里⌊⋅⌋ 表示的是。这是格雷厄姆、克努特、帕塔什尼克在这本颇具影响力的书中所采用的方法

这将给你1/2(mod3)=1/2

要解决您的问题,您需要
a=7*(4/11)=28/11
,以及
b=10

a/b
=(28/11)/10=0.254545

⌊a/b⌋=0

b⌊a/b⌋=0*0=0

a-b⌊a/b⌋=28/11-0=28/11

这意味着你的答案是28/11

Wolfram Alpha并给出
28/11
作为精确结果。也同意,但以小数形式给出,2.5454


分数是一个精确的答案,而不是小数。

我可以推测符号是错误的,整个表达式应该在每个中间阶段的mod 10中进行计算。因为(11模1)是1,所以答案是(7*4)模10=8

设想一个只支持1位数的计算器

我并不是说这是正确的答案,我同意28/11是正确的答案,但我试图进入教授的头脑。这在密码学中很常见,在密码学中,每次计算都是在2^256模左右执行的。

8 8确实是正确的答案

7*4/11模10
意味着我们正在研究
7*4*x模10
其中x是11模10的模逆,这意味着
11*x模10=1
。 这适用于
x=1
11*1 mod 10=1


因此,
7*4*x mod 10
变成了
7*4*1 mod 10
,即
28 mod 10=8
,原来的问题可能应该这样写,因为这有不同的含义,这意味着每个术语都使用隐含的
mod 10
操作进行评估

这个问题有点奇怪,因为模值10不是通用的,因为它不是素数。例如,由于未定义
1/2 mod 10
,无法计算以下内容,因为2和10不是互质


因此,以下是讲师的正确答案。我不知道他是怎么想到这个的:

    7  4/11 mod 10 = ((7  4) mod 10)(11−1 mod 10) mod 10
    = (28 mod 10)(1 mod 10) mod 10
    = (8)(1) mod 10
    = 8 mod 10
使用Python:

from fractions import Fraction
from math import fmod

print (fmod(Fraction(28, 11), 10))

结果将是2.5454。所以我想8是错的。

如果x不是整数,首先需要定义x mod 10的含义。如果
x
y
是整数,那么一个定义就是
x/y mod 10
等于
[x mod(10*y)]/y
(这将是一个合理的值)。我也得到了28/11,但我的教授声称这是错误的。出于兴趣,你的教授得到了什么答案?除非是
26/11
(=28/11写为整数和a)我不确定他能得到什么答案。根据公认的答案,教授想要
(28 mod 10)/(11 mod 10)
谢谢大家。我感谢你的帮助。我会发回讲师想要的确切答案。你能解释一下你做了什么,以及你是如何得出答案的吗