课程设计题目,关于黑洞数的,新人求帮忙,感激不尽!!!

Makmc 2014-03-28 01:46:10
请编写程序,输入正整数n,1<n<50000, 输出小于n的所有完全数、亲密数、水仙花数、阶乘和数、自守数、孪生素数,黑洞数。完全数是恰好等于自身的因子之和的数,如6是,因为6=1*2*3=1+2+3; 亲密数是两个正整数,每个全部因子之和等于对方(因子中只不计本身),如220和284是,因为220的全部因子是1,2,4,5,10,11,20,22,44,55,110,和为284,而284的全部因子是1,2,4,71,142,和为220;水仙花数是恰好等于自身各位数字立方和的数,如153是,因为153=13+53+33;阶乘和数是恰好等于自身各位数字阶乘的和的数,如145是,因为145 = 1!+4!+5!;自守数是平方后尾部数字是自身的数,如9376是,因为93762=87909376; 孪生素数是差2的两个素数,如197和199。黑洞数又称陷阱数,是经有限次“重排求差”操作达到的不再改变的数,“重排求差”操作是将组成一个数的各位数字重排得到的最大数减去最小数,例如207,“重排求差”操作序列是:720-027=693,963-369=594,954-459=495,再做下去不变了。再用208算一次,也停止到495,所以495是三位黑洞数。
提示:一般都可以用枚举法求解,即按照定义检查一定范围内的所有数。


只有黑洞数打不出来了,求大神帮忙,用C++实现
...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2014-03-28
  • 打赏
  • 举报
回复
判断是否黑洞数,大概按照以下步骤处理,就可以了: 1)分离每一位数字。 2)各位数字排序。 3)正反序组成的数字,就是最大和最小数。 4)求差。 5)比较,求出的差和原数相等,则该数就是黑洞数。 还是比较麻烦的。 但是编程,都不是很难。
lm_whales 2014-03-28
  • 打赏
  • 举报
回复
最大数减去最小数,,各位数字升序降序分别排序, 降序最大,升序最小 如果两次结果相同,说明,各位数字没有改变,就成黑洞了,否则应该是某种循环,不然判断不了 假设该数有20位,那么这种差的位数,不会多于20位,最多历一下所有20位数。也就该结束了,实际上显然是不需要的那么多次的,那么可以用数组,记录一下所有曾经产生的数字,假设200个数据必然结束,定义200个元素的数组即可。 遇到重复,则结束处理,开始判断 相邻两个数相等,为黑洞数,不相等为循环数。 PS: 这种题,确实只能作为编程训练用,无多少实际意义
Makmc 2014-03-28
  • 打赏
  • 举报
回复
引用 2 楼 lianshaohua 的回复:
中国做这样的题有意思吗?
没办法= =唉
ztenv 版主 2014-03-28
  • 打赏
  • 举报
回复
中国做这样的题有意思吗?
Makmc 2014-03-28
  • 打赏
  • 举报
回复
可以的话 加上注释

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧