- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我决定使用 Sagemath,因为我听说它在数论中非常有用。我制作了这个程序(这是我的第一个程序)来分解一个数字,但我不知道为什么它不起作用。我认为它与 function mod 的特定属性有关,但我不确定。
有人知道怎么解决吗?谢谢。
#Pollard algorithm
k=87757
f(x)=x^2+1
x=1
y=x
iter=20
i=0
while(i<iter):
i=i+1
x=mod(f(x),k)
y=mod(f(f(y)),k)
g=(x-y).gcd(k)
if(1<g and g<k):
print(g)
print(i)
break
最佳答案
我认为问题确实出在您对 mod
的使用上功能。一旦你做了 x = mod(f(x), k)
, 然后 x
住在环Z/kZ
. g
也是如此。 .那个环中的不平等并没有真正意义,特别是,g<k
将被翻译成 g<0
.这是因为 k=0
国防部 k
当你进行代数运算、等式检查、不等式检查等时,两边都会转换为可用的最佳环。在这种情况下,那个环是 Z/kZ
.
一直使用整数可能会更好:
x = f(x).mod(k)
y = f(f(y)).mod(k)
这是使用 mod
的区别作为函数或方法:
sage: type(5.mod(3)) # method
<type 'sage.rings.integer.Integer'>
sage: type(mod(5, 3)) # function
<type 'sage.rings.finite_rings.integer_mod.IntegerMod_int'>
如果我想将其保存在适合在 Sage 中使用的 Python 文件中,我会这样做:
from sage.rings.all import Integer
def f(x):
# Make sure to return a Sage Integer.
return Integer(x**2+1)
def testing(iter=20):
x=1
y=x
i=0
k=87757
while i<iter:
i=i+1
x=f(x).mod(k)
y=f(f(y)).mod(k)
g=(x-y).gcd(k)
# For debugging:
# print(x, y, g)
if 1<g and g<k:
print(g)
print(i)
break
您可以为您的函数添加更多选项:allow k
作为输入,x
, y
等等。无论如何,然后运行 testing(20)
.
关于python - 如何修复 Sagemath 中函数 mod 的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54894845/
给定一个从 R 到 R^n 的函数,我想通过预组合定义一个新函数,例如如下 alpha(x) = [e^x,e^(-x)] beta(x) = alpha(-x+2) 但是尝试以这种方式这样做会引发错
我正在尝试求解类型方程 x = Ax 其中 x 是向量,A 是矩阵,使用 sagemath。 为此,我写了 A = matrix(QQ, [[0, 4, 4], [
如何使用 Sagemath 求解联立方程: x^2 +y^2 +6z^2 = 3 6x^2 +6y^2 +z^2 = 2 x +y+z = 0 最佳答案 使用户8408080的答案more expli
在 SageMath(版本 4.7)中,我在笔记本中执行此操作: var("x y") dens(x, y) = 2 if y 0 如果您只关心函数采用的值(例如,您正在绘制它),则可以简单地使用
关于the SageMath tutorial tour page的第二段说 If you are viewing the tutorial in the Sage notebook, press s
是否可以在 python session 中导入 sagemath 函数? 从用户的角度来看,我希望做的是: >>> import sage >>> sage.kronecker_symbol(3,5
我有线性方程组,但是我不希望答案是一个数字 - 我希望它是参数。 ax+by=米CX+DY=n 我没有任何常数的值,所以对于上面的方程,我只想要答案 x = (md-nb)/(ad-bc) 和 y =
我有线性方程组,但是我不希望答案是一个数字 - 我希望它是参数。 ax+by=米CX+DY=n 我没有任何常数的值,所以对于上面的方程,我只想要答案 x = (md-nb)/(ad-bc) 和 y =
所以我想用一个参数( s )在一个变量( a )中打印多项式,比如说 a·s^3 − s^2 - a^2·s − a + 1 . Sage 总是以递减的程度显示它,我想得到类似的东西 1 - a -
我想知道为什么这两个“程序”产生不同的输出 f(x)=x^2 f(90).mod(7) 和 def f(x): return(x^2) f(90).mo
我一生中从未使用过 SageMath,我依赖互联网上的速成类(class)了解如何从 SageMath 中获得我想要的东西(在有限域上绘制椭圆曲线)。 我正在使用 this code , 粘贴在下面:
我正在尝试使用 Sagemath 积分分段函数,但发现这是不可能的。我的原始代码如下,但由于描述的意外评估而导致错误 here . def f(x): if(x 3/2*x^2 + 3*x]
我需要帮助在我的 ubuntu 16 笔记本电脑上安装 sagemath。 我这样做了: cat /etc/os-release cd ~ wget http://mirrors.mit.edu/sa
我一直在尝试开发一种代码,其中用户使用x和y输入函数,然后将其读入积分。我尝试使用 eval 和 sage_eval 但都不起作用。 这是我的尝试: y = var('y') f(y) = eval(
是否可以从 VirtualBox 上运行的 SageMath/Jupyter 访问存储在硬盘中的文件? 最佳答案 刚刚找到了一个解决方案(非常明显):在 VirtualBox 中定义一个共享文件夹,并
我是 Python 和 SageMath 的新用户。 我有两个非线性方程: f(x)==h(x) g(x)+S_{i,j,k}(x) == 0 我知道我可以解决 1. 在数值上,做: x = var(
我想将 xlrd、xlwt、xlutils 与 sagemath 结合使用。我已将它们安装在我系统的 Python(2.7.3) 中,但 sage 环境无法识别它们。当我尝试使用 sage 导入时出现
我目前正在使用 sagemath 托管的在线工作簿制作一些图表。 这是我尝试生成图表的一些代码示例: myplot = list_plot(zip(range(20), range(20)), col
我正在使用 Sagemath/Cocalc(随意在您的 browser 中运行它,无需注册,无需任何操作)。据我所知,Sagemath 只是 Python 之上的一个库,而 Sagemath 笔记本隐
我可以将 Python 内核与 Jupyter 一起使用。我正在寻找一种在 Jupyter 中使用 sagemath 的方法。我看不到安装它的方法。怎么做? 最佳答案 你在倒退; Sage 在其中包含
我是一名优秀的程序员,十分优秀!