鱼C论坛

 找回密码
 立即注册
查看: 3125|回复: 4

题目97:找出非梅森素数28433 × 2^7830457 + 1的最后十位

[复制链接]
发表于 2016-8-12 01:03:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Large non-Mersenne prime

The first known prime found to exceed one million digits was discovered in 1999, and is a Mersenne prime of the form QQ20160811-2@2x.png ; it contains exactly 2,098,960 digits. Subsequently other Mersenne primes, of the form QQ20160811-3@2x.png , have been found which contain more digits.

However, in 2004 there was found a massive non-Mersenne prime which contains 2,357,207 digits: QQ20160811-4@2x.png .

Find the last ten digits of this prime number.


题目:

第一个超过一百万位的素数是在 1999 年发现的,并且是一个梅森素数: QQ20160811-2@2x.png ;它包含 2,098,960 位。之后包含更多位的,形如 QQ20160811-3@2x.png 的梅森素数被陆续发现。

但是在 2004 年人们发现了一个巨大的包含 2,357,207 位的非梅森素数: QQ20160811-4@2x.png

找出这个素数的随后十位。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-20 13:41:41 | 显示全部楼层
一行代码:
  1. print(28433*pow(2, 7830457, 10**10) +1)%10**10
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-4 10:45:06 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-8-10 11:15 编辑
  1. print((28433 * pow(2, 7830457, 10000000000) + 1) % 10000000000)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-20 09:52:57 | 显示全部楼层
8739992577

Process returned 0 (0x0)   execution time : 0.085 s
Press any key to continue.
防溢出的快速幂
  1. #include<iostream>
  2. using namespace std;
  3. typedef long long ll;
  4. const ll M = 1e10;
  5. const ll UB = 1e4;

  6. ll fast_power(ll base,ll pow){
  7.   ll res = 1;
  8.   while(pow > 0){
  9.     if (base < UB){
  10.       if (pow & 1)  res = res * base % M;
  11.       base = base * base % M;
  12.       pow >>= 1;
  13.     }
  14.     else{
  15.       res = res * base % M;
  16.       pow -= 1;
  17.     }
  18.   }
  19.   return res;
  20. }

  21. int main(){
  22.   ll c1 = 28433,c2 = 7830457;

  23.   cout << (c1 * fast_power(2,c2) + 1) % M << endl;
  24.   return 0;
  25. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-19 20:32:25 | 显示全部楼层
本帖最后由 hveagle 于 2024-5-19 20:35 编辑

暴力求解即可:
  1. print(28433*pow(2, 7830457)+1 % 10000000000)
复制代码

由于位数限制,调整至2357207位即可:
  1. from sys import *
  2. set_int_max_str_digits(2357207)
  3. print(28433*pow(2, 7830457)+1 % 10000000000)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 14:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表