返回首页
最新
我在Zybo Z7-20 FPGA(价值200美元的开发板)上构建了一个Proth素数测试器,并发现了一个新的1123位素数:2079 * 2^3718 + 1。
Proth素数的形式为k * 2^n + 1。它们有一个很好的性质:Proth定理为素数性提供了确定性的证明,而不仅仅是一个概率性测试。如果你能找到一个整数a,使得a^((p-1) / 2) ≡ -1 (mod p),那么这个数就被证明为素数。没有“可能”的说法。
有趣的部分是硬件。核心是一个4096位的Montgomery CIOS乘法器,运行在Zynq-7020上。它使用了28个DSP48E1切片,运行频率为74 MHz,完成一次完整的模乘大约需要8514个时钟周期。主机PC运行一个代数筛(使用小素数的离散对数消除约92%的候选数),预计算Montgomery常数,然后通过115200波特率的UART将每个候选数发送到FPGA。
PrimeGrid已经对所有k < 1200且n > 3,000,000的情况进行了详尽的搜索。k = 1200以上的情况仍然是空白。我选择k = 2079是因为我的筛选显示在高n下它有最多的存活候选数。之前没有人测试过这个数。
这个素数还可以整除5个广义费马数,这也是一个意外的收获。
在这个过程中发现了12个硬件bug。亮点包括:Vivado 2019.1在多路复用的数据路径源宽度不同时会悄悄修剪寄存器位。Montgomery CIOS算法产生的结果在[0, 2p)范围内,而不是[0, p)范围内,如果在每次乘法后不进行归一化,误差会在成千上万次平方运算中累积。Verilog中的非阻塞赋值意味着你的“组合”读出实际上是滞后一个周期的。
所有的RTL(Verilog)、Python脚本和构建文件都是开源的。
你可以自己验证:
```python
p = 2079 * (1 << 3718) + 1
print(pow(5, (p-1)//2, p) == p - 1) # True
```
[查看代码](https://github.com/0xdeadbeefnetwork/Optimus_Prime)
今天我在使用Gemini(3.1专业版),并与关于移动运营商在gemini.google.com上提供的服务进行了长时间的对话。在其中一条回复中,Gemini突然插入了一句与话题完全无关的话:“顺便提一下,要访问所有功能,请启用Gemini应用活动。”最后三个字是一个链接,指向<a href="https://myactivity.google.com/product/gemini" rel="nofollow">https://myactivity.google.com/product/gemini</a>。
注意事项:
1. 这次对话与谷歌活动等完全无关,是一个完全不同的话题。
2. 我没有启用应用活动。
3. 谷歌在许多不同的地方试图说服用户允许他们获取历史记录和数据(应用活动)。
4. 我不知道这是否是训练的结果,还是通过API插入的文本,但无论如何,它直接出现在Gemini生成的其他文本(回复)的段落中。
我们讨论的是OpenAI的广告,但这里却以大黑字直接在模型回复中展示了谷歌的一个黑暗模式。
顺便说一下:Gemini Pro 3.1确实完成了这个任务,并提供了很多有用的信息。
我想我刚刚经历了第一次与“人工智能”驱动的呼叫中心的互动。
我打电话询问一个关于我使用的英国政府服务的简单问题,接通后我遇到了一位人类接线员,但她不断给我错误或无关的回答,以一种我从未听过的奇怪方式。我猜我的声音被转化为文本,然后喂给一个聊天机器人,接线员只是根据屏幕上的文本回答我。
在我多次说“抱歉,这根本没有回答我的问题”之后,她似乎开始掌控局面,回复我说:“你没有在听我说。如果你不听我说,我就无法帮助你。”我回答说:“我在听,但没有听到答案。”这显然超出了聊天机器人的理解范围,因为她随后挂断了电话。
我又打回去,接到了一个不同的接线员……她给出的也是同样的无关答案,只是有些微小的变化,结果还是一样。真是个彻底的失败。
我想这就是未来。“人工智能”在操控人类傀儡。