结果是
#include stdio.hint fun(int n) /*函数用来判断一个数是否是完全数.是就返回1. 不是返回0*/
{
int i,sum = 0;
for(i=1;in;i++)
if(n % i == 0) //如果i是n的因子. 就将i累加到sum中.
sum = sum + i;
}
if(sum == n) //判断n和sum是否相等.如果相等就说明这个数是完全数.返回1.
return 1;
return 0; //否则返回0;
}int main()
int i,t;
/*输入一个整数,判断这个数是否是完全数*/
scanf("%d", t);
if( fun( t ) )
printf( "Yes\n" );
else
printf( "No\n" );/*输出1000以内所有完全数*/
for(i = 1; i = 1000; i++)
if( fun( i ) )
printf("%d\t",i);
printf("\n");
return 0;
在你的这个思路中,可以优化的主要就是几方面:
①.:求因数可以仅算到n的平方根q为止,对于n,每有一个小于q的因数,就有一个对应的大于q的因数,两者之积为n.
实际上,当一个数比较大的时候,做因数分解是一个很费时的工作,要找更大的完数,需要更好的因数分解的方式.比如先求出所有的质因数,在使用这些质因数的组合来寻找非质因数.因为质因数必然是在质数表中,而质数表可以建立一次然后重复使用,相对一个个的试商就快得多了.
总体来说,不解决因数分解的问题,主要就是上述三种优化了.
import sys
theNum = input('请输入一个数:')
try:
theNum = int(theNum)
except ValueError:
print("请输入一个整数!")
sys.exit()
# 因子
# 因子的和
# 求因子的和
print("{} 是完全数!\n".format(theNum))
else:
print("{0} 是丰沛数!\n".format(theNum))
print("{0} 是不足数!\n".format(theNum))
以上就是土嘎嘎小编为大家整理的python函数完数判断相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!