输入两个正整数,输出两个正整数之间完数的个数及所有完数;输出一千以内的完数(C)

养成好习惯,点个赞 再走;有问题,欢迎私信、评论,我看到都会回复的

  • 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身
  • 因数 是指整数m除以整数n(n≠0) 的商正好是整数而没有余数,我们就说n是m的因数

比如6,28都是完数:6 =1+2+3;28 =1+2+4+7+14。

对于某一整数来说,其最大因子为n/2 (若n为偶数最大因子为n/2,若为奇数最大因子小于n/2),在n/2〜n-1范围内没有数据可以整除此数

文章目录

  • 输入两个正整数,输出两个正整数之间完数的个数及所有完数
  • 输出一千以内的完数

输入两个正整数,输出两个正整数之间完数的个数及所有完数

#include
#includeint perfectNumber(int n){ //判断是否为完数 int sum = 0;for(int i = 1; i <= n/2; i++){if(n % i == 0){sum += i;}}if(sum == n)return 1;return 0;
}int main(){int count = 0;int m,n;scanf("%d%d", &m, &n);if(n > 1 && m > 1){  //1必定不是完数if(m > n){ //确保m为左边界,n为右边界int t = m;m  = n;n = t;}for(int i = m; i <= n; i++){if(perfectNumber(i)){count++;printf("%d\n", i);}}}printf("有 %d 个完数", count);return 0;
} 

输入:2 10000
输出:

6
28
496
8128有 4 个完数

输出一千以内的完数

#include
int main()
{int i, t, sum;  //t代表数的因子,sum代表一个数的因子之和 for(i = 1; i <= 1000; i++){sum = 0;for(t = 1; t <= i/2; t++){if(i % t == 0){sum += t;}}if(sum == i){printf("%-10d", i);}}return 0;
}

输出:

6         28        496      

C语言入门题目文章导航:

  1. 素数(C)
  2. 水仙花数(C)
  3. 斐波那契数列(C)
  4. 本篇文章
  5. 阶乘(C)
  6. 直角杨辉三角形(C)
  7. 大写字母、小写字母、ASCII码(C)
  8. 输入一个字符,找出他的前驱字符和后继字符(C)
  9. 最大数、最小数(C)
  10. 百钱买百鸡(C语言,枚举法)
  11. 辗转相除法求最大公约数,利用最大公约数求最小公倍数(C)
  12. 输入一个年份和一个月份,输出该年此月天数;知道日期,计算该日是本年的第几天(C)
  13. 输入一个不多于4位的正整数,求它的位数,并按逆序输出各位数字(C)
  14. 利用二维数组求方阵的主次对角线之和(C)
  15. 在一个二维数组中找出最小数及其所在的行和列(C)
  16. 找出一个二维数组中的鞍点(C)
  17. 删除指定字符串的指定字符(C)
  18. 字符串(C)
  19. 条件判断语句1(C)
  20. 条件判断语句2(C)
  21. 圆、三角形、正方形、长方体、计算1到100的和、和差积商、平均值
  22. 输入三个整数,要求程序把数据按从小到大的顺序放入x y z中,然后输出(C)
  23. 18个数围成一圈,求相邻三数之和最大数(C)
  24. 梯形法求定积分(C)
  25. 学生与课程的综合问题(C)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部