一道定义函数C程序题目
问题描述:
一道定义函数C程序题目
若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,6的因子之和为1+2+3=6,因此6与6为一对亲密数(即6自身构成一对亲密数);又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数.编写程序,求500以内的所有亲密数对,如下图所示.
6--6
28--28
220--284
496--496
要求:
1、定义函数int sumfact(int n),该函数的功能是返回参数n的因子的和
2、在主函数中调用sumfact函数,输出500以内的亲密数
3、分别划出main函数和sumfact函数的流程图
我的编程写成:
#include
int sumfact(int n);
main(){
int i=1,j=1;
printf("亲密数对:\n");
for(i=1;i
答
有一个方法能简单的解决这个问题,按照题目的意思,亲密数可以说就两种情况,
第一种是两个数相同的,如:6--6,28--28
第二种是前一个数大,后一个数小:如220--284
你会说还一种情况,前一个数小,后一个数大,这种情况必然是和第二种情况重复的,仔细想想就明白了,所以加一个if判断就行:(只有在第一个数小于或者等于第二个数的情况才输出)
if(sumfact(i)==j&&sumfact(j)==i)
{
if(i