首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Pari-GP检验偶数亏完全数猜想的反例

用Pari-GP检验偶数亏完全数猜想的反例
EN

Stack Overflow用户
提问于 2022-02-01 11:27:04
回答 2查看 25关注 0票数 0

我试着用MSE问题的Pari解释器检查这个Sage单元服务器中所述猜想的反例。

我在这里重现了猜想的陈述:如果N>8是偶数亏-完全数,Q=N/(2N-Sigma(N)),则Q是素数。

在这里,σ( N )是N的经典除数和。

我使用以下代码:

代码语言:javascript
复制
for(x=9, 1000, if(((Mod(x,(2*x - sigma(x))) == 0)) && ((fromdigits(Vecrev(digits(x / (2*x - sigma(x)))))) == (x / (2*x - sigma(x)))) && !(isprime((x / (2*x - sigma(x))))), print(x,factor(x))))

但是,Sage Cell Server的Pari解释器不接受它,而是提供了以下错误消息:

代码语言:javascript
复制
  ***   at top-level: for(x=9,1000,if(((Mod(x,(2*x-sigma(x)))==0))&&
  ***                                   ^----------------------------
  *** Mod: impossible inverse in %: 0.

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2022-03-06 23:47:00

下面是您算法的更好实现

代码语言:javascript
复制
{
  forfactored(X = 9, 10^7,
    my (s = sigma(X), t = 2*X[1] - s);
    if (t <= 0, next);
    my ([q, r] = divrem(X[1], t));
    if (r == 0 && fromdigits(Vecrev(digits(q))) == q && !ispseudoprime(q),
      print(X)))
}

它更具可读性,但最重要的是,它避免了一次又一次地对同一个x进行分解:每次编写sigma(x)时,我们都需要考虑x (解释器不够聪明,无法计算一次子表达式)。实际上,它并不是通过使用forfactored来执行单一的因式分解,而是执行一个筛子(变量X包含[x, factor(x)])。在这个范围内,这大约比最初的实现快3倍。

我让它运行到10^9 (大约10分钟),没有更多的反例。

票数 1
EN

Stack Overflow用户

发布于 2022-02-01 11:54:56

我自己做的。

下面是我使用的代码:

代码语言:javascript
复制
for(x=9, 10000000, if((2*x > sigma(x)) && ((Mod(x,(2*x - sigma(x))) == 0)) && ((fromdigits(Vecrev(digits(x / (2*x - sigma(x)))))) == (x / (2*x - sigma(x)))) && !(isprime((x / (2*x - sigma(x))))), print(x,factor(x))))

搜索返回奇怪的反例N= 9018009,这是预期的。

在指定的范围内,它没有返回任何偶数反例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70939790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档