Jimmy小站
小明也有大梦想 — 蒋明/铭6-5 编程题,输出m ~n 之间的所有完数
2015-08-30 / C语言基础题 / 3412 次围观 / 0 次吐槽6-5 编程题,输出m ~n 之间的所有完数 44
【问题描述】
输入2 个正整数m 和n(m≥1,n≤1 000),输出m ~n 之间的所有完数,完数就是因子和与它本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回number 的因子和。
例如,factorsum(12)的返回值是16(1 +2 +3 +4 +6)。
【输入形式】
从键盘输入2个正整数m 和n。
【输出形式】
输出m ~n 之间的所有完数。
【样例输入1】(下划线部分为键盘输入,其余部分为程序输出)
Input m: 1
Input n: 100
【样例输出1】(输出格式控制符为:%5d)
1 6 28
【样例输入2】(下划线部分为键盘输入,其余部分为程序输出)
Input m: 1
Input n: 500
【样例输出2】(输出格式控制符为:%5d)
1 6 28 496
【样例说明】
输入提示符后要加一个空格。例如“Input a: ”,其中“:”后要加一个且只能一个空格。
英文字母区分大小写。必须严格按样例输入输出。
#include<stdio.h> int factorsum(int n) { int i,sum=0,k=1; for(i=1;i<n;i++){ if(n%i==0){ sum=sum+i; } } if(sum==n){ k=0; } return k; } int main(void) { int m,n,i,j; printf("Input m: "); scanf("%d",&m); printf("Input n: "); scanf("%d",&n); if(m==1){ printf("%5d",m); } for(i=m;i<=n;i++){ j=factorsum(i); if(j==0){ printf("%5d",i); } } return 0; }
整合成函数调用,如下
#include<stdio.h> int factorsum(int num); int main(void) { int n,m,i,sum,j; printf("Input m: "); scanf("%d",&m); printf("Input n: "); scanf("%d",&n); for(i=m;i<=n;i++){ sum=factorsum(i); if(i==sum) printf("%5d",i); } return 0; } int factorsum(int num){ int result = 0; int j = 0; for(j=1;j<=num/2+1;j++){ if(num%j==0) result += j; } return result; }
推荐您阅读更多有关于“”的文章
本月热文
Copyright © Jimmy小站 Allrights Reserved.备案号:桂ICP备 15005996
额 本文暂时没人评论 来添加一个吧
发表评论