用java或C语言找到10000000以内的完美数

首先要知道完美数的计算公式,如果用循环来写会超时的计算公式:如果2^p-1为素数,那么(2^p-1)*(2^(p-1))为完美数,只需要去遍历p就可以了10000000万的话,遍历到30就妥妥的够了,注意结束条件不要因为相乘导致越界。下面是java和C语言实现的代码,语法相识,所以差不多。目前世界上已知的完美数为49个,整型范围内只有5个,如果没有其他方法可以打表输出,下面是整型范围内的5个完美数

6
28
496
8128
33550336

Java代码

package zhh_2;
import java.lang.Math;
public class wanMeiShu {
static int Prime(int n) {
if (n == 1)
return 0;
int k = (int)Math.sqrt(n);
for (int i = 2; i <= k; i++)
if (n % i == 0)
return 0;
return 1;
}
public static void main(String[] args) {
for(int i=2;i<1000;i++){
int k= (int) (Math.pow(2, i) - 1);
if(Prime(k)==1){
int x= (int) ( Math.pow(2, i - 1) * k);
if(x<=10000000)
System.out.println(x);
else break;
}
}
}
}

C语言代码

#include<stdio.h>
#include<math.h>
int Prime(int n) {
if (n == 1)
return 0;
int k = (int)sqrt(n);
for (int i = 2; i <= k; i++)
if (n % i == 0)
return 0;
return 1;
}
int main()
{
for(int i=2;i<1000;i++){
int k= (int)(pow(2,i)-1);
if(Prime(k)==1){
int x= (int)(pow(2,i-1)*k);
if(x<=10000000)
printf("%d\n",x);
else break;
}
}
}

 

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

用java或C语言找到10000000以内的完美数

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 用java或C语言找到10000000以内的完美数
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏