网站大量收购闲置独家精品文档,联系QQ:2885784924

hdu hdoj 1406 完数.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hdu hdoj 1406 完数

问题描述 完数 Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9129????Accepted Submission(s): 3047 Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。 本题的任务是判断两个正整数之间完数的个数。 ? Input 输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1num1,num210000) 。 ? Output 对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数。 ? Sample Input 2 2 5 5 7 ? Sample Output 0 1 ? Author lcy ? Source 杭电ACM集训队训练赛(IV) ? Recommend Ignatius.L 问题分析与算法实现 参考代码 #include iostream #include cmath #define MAX 10000 using namespace std; int i,j; int len=0; int Prime[MAX/3],NotPrime[MAX]; void GetPrime() { for(i=2;iMAX;i++) { if(NotPrime[i]==0) { Prime[len++]=i; } for(j=0;jlenPrime[j]*iMAX;j++) { NotPrime[Prime[j]*i]=1; if(i%Prime[j]==0) break; } } } int Perfect[MAX+1]; void GetPerfectNumber() { int i,sum; int a,m; int N; GetPrime(); for (i=2;i10001;i++) { m=0; sum=1; N=i; while(N1) { a=0; while(N%Prime[m]==0) { N/=Prime [m]; a++; } if(a0) { sum=sum*(pow(Prime[m],(a+1))-1)/(Prime[m]-1); } m++; } Perfect[i]=Perfect[i-1]; if(sum==2*i) { Perfect[i]++; } } } int main() { int n; int a,b,temp; GetPerfectNumber(); cinn; while(n--) { cinab; if(ab) { temp=a; a=b; b=temp; } coutPerfect[b]-Perfect[a-1]endl; } return 0; } #pragma warning (disable:4786) #include iostream #include set using namespace std; //求330以内的所有素数 int len; const int MAX=330; bool Notprime[MAX]; int prime[MAX/3]; void get_prime() { len=0; int i,j; for(i=2;i

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档