欧拉计划:纠结的第23题,找出所有不能表示为两个过剩数之和的正整数之和,优化后7s可以执行完,再优化5秒
如果一个数的所有真因子之和等于这个数,那么这个数被称为完全数。例如,28的所有真因子之和为1 + 2 + 4 + 7 + 14 = 28,所以28是一个完全数。
如果一个数的所有真因子之和小于这个数,称其为不足数,如果大于这个数,称其为过剩数。纠结并不是因为这道题目有多么难,程序很快就写出来了,
分为两部,首先求出小于28123的过剩数。并把他们放在数组和哈希中,放在数组中是为了遍历,放在hash中是为了查找方便
其次,遍历1到28123,遍历数组,如果当前数减去数组里的一个数载哈希中存在,那么久pass。
这个程序的效率不高。有1分钟以上。
程序如下:
C:\WINDOWS\system32\cmd.exe /c perl "C:\Documents and Settings\A面\names.pl"41798715Hit any key to close this window...