输入两个正整数,输出两个正整数之间完数的个数及所有完数;输出一千以内的完数(C)
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。1. 输入两个正整数,输出两个正整数之间完数的个数及所有完数。2. 输出一千以内的完数
·
养成好习惯,点个赞 再走;有问题,欢迎私信、评论,我看到都会回复的
- 完全数(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<stdio.h>
#include<math.h>
int 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<stdio.h>
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语言入门题目文章导航:
- 素数(C)
- 水仙花数(C)
- 斐波那契数列(C)
- 本篇文章
- 阶乘(C)
- 直角杨辉三角形(C)
- 大写字母、小写字母、ASCII码(C)
- 输入一个字符,找出他的前驱字符和后继字符(C)
- 最大数、最小数(C)
- 百钱买百鸡(C语言,枚举法)
- 辗转相除法求最大公约数,利用最大公约数求最小公倍数(C)
- 输入一个年份和一个月份,输出该年此月天数;知道日期,计算该日是本年的第几天(C)
- 输入一个不多于4位的正整数,求它的位数,并按逆序输出各位数字(C)
- 利用二维数组求方阵的主次对角线之和(C)
- 在一个二维数组中找出最小数及其所在的行和列(C)
- 找出一个二维数组中的鞍点(C)
- 删除指定字符串的指定字符(C)
- 字符串(C)
- 条件判断语句1(C)
- 条件判断语句2(C)
- 圆、三角形、正方形、长方体、计算1到100的和、和差积商、平均值
- 输入三个整数,要求程序把数据按从小到大的顺序放入x y z中,然后输出(C)
- 18个数围成一圈,求相邻三数之和最大数(C)
- 梯形法求定积分(C)
- 学生与课程的综合问题(C)
更多推荐


所有评论(0)