【问题描述】输入一个整数,输出从3开始到该数之间的所有完数。
要求:编写函数,判断一个正整数a是否为完数,如果是完数,函数返回值为1,否则为0。
概念普及:完数:一个数的所有因子之和等于该数本身。如,6、28都是完数,6=1+2+3,28=1+2+4+7+14。
【输入形式】输入一个整数
【输出形式】输出从3开始到该数之间的所有完数,每个数输出
【样例输入】10
【样例输出】6
【样例输入】0
【样例输出】no
【样例输入】30
【样例输出】6 28
#include<stdio.h>
int fun(int n){
int sum = 0;
for(int i=1;i<n;i++){
if(n%i==0)
sum += i;
}
if(sum==n)
return 1;
return 0;
}
int main()
{
int i,n,count=0;
scanf("%d",&n); //输入一个正整数n
for(i=3;i<=n;i++)
{
if(fun(i)){
count++;
printf("%d ",i);
}
}
if(count==0)
printf("no");
return 0;
}
#include <stdio.h>
int ws(int n)
{
int sum = 0;
for(int i=1;i<n;i++)
if(n%i==0)
sum += i;
if(sum == n)
return 1;
return 0;
}
int main()
{
int n,count= 0;
scanf("%d",&n);
for(int i=3;i<=n;i++)
if(ws(i) == 1)
{
count++;
printf("%d ",i);
}
if(count == 0)
printf("no");
}
#include<stdio.h>
int function(int n);
int main() {
int n, count=0;
if (scanf("%d",&n) == 1) {
for (int i = 3; i <= n; i++) {
if(function(i)){
count++;
printf("%d ", i);
}
}
if(count==0)
printf("no\n");
}
return 0;
}
int function(int n) {
int sum = 0;
for(int i=1;i<n;i++) {
if(n%i==0)
sum += i;
}
if(sum==n)
return 1;
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!