会C的朋友帮我下。谢谢了
这是明天我要考试的题谁能帮我下啊。明天是我专生本考试。我不是学计算机的。所以我不会C语言。请会的朋友帮我下。小弟万分感激 明天上午11点我要考试。请朋友帮我下
要求包括:算法简介,源程序,对主要变量和重要语句的注释,运行结果的说明(对于给出测试数据的题,要附上输出结果)
麦森数(2003年全国联赛初中组试题之一)
形如2P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数。2P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。
任务:从文件中输入P (1000<P<3100000)
计算2P-1的值(用十进制高精度数表示),最后在文本文件上输出:
(1) 第1行:十进制高精度数2P-1的位数。
(2) 第2-11行:十进制高精度数2P-1的最后500位数字。(每行输出50位,共输出10行,不足500位时高位补0)
不必验证2P-1与 P是否为素数。
例:当P=1279时,一个正确的输出应为:
386
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000104079321946643990819252403273640855
38615262247266704805319112350403608059673360298012
23944173232418484242161395428100779138356624832346
49081399066056773207629241295093892203457731833496
61583550472959420547689811211693677147548478866962
50138443826029173234888531116082853841658502825560
46662248318909188018470682222031405210266984354887
32958028878050869736186900714720710555703168729087
测试数据:
(1)11213,(2)3021377
(提示: 由于要求运行时间不超过2秒,当指数P很大时,应采用分治法计算:
设P=d×2k+R,其中 0≤R<2k
,第1项可以通过不断自乘计算,第2项可以递归计算。计算时,首先筛选d,t,R,易知:2t<=221<2100000,可对t=1,…,21筛选:在1<=d<=21的范围里,求最小的R。如果R<=1000,直接计算,否则对R递归计算。先计算2R,再计算2d,以及 ,最后计算 与2R的积
)
[此贴子已经被作者于2005-12-27 2:14:44编辑过]