如果一个数恰好等于它的因子之和,这个数就称为“完数”,例如6的因子为1,2,3,而6=1+2+3,则6为“完数”,编写程序找出1000以内所有完数,并按下面格式输出其因子
6 its factors is 1,2,3
/* Note:Your choice is C IDE */
#include <stdio.h>
void main(){
int i,j;
int num;//因子之和
int m,n;
int flag = 0;
for(i=1;i<=1000;i++){
num = 0;
//printf("%d的因子如下:",i);
for(j=2;j<=i;j++){ //j代表i对应的任何一个可能的因子
if(i %j == 0){
num += i/j;
}
}
//判断因子之和是否和该数相等
if(num==i){
printf("%d\n",i);
flag = 1;
}
}
printf("\n");
if(flag == 0){
printf("No Answer\n");
}
}
for循环遍历n的所有因子并求和即可。
#include<stdio.h>
int main() {
int a[1000],s,la,i,j,k;
for(i = 1; i <= 1000; i++) {
la = 0;
s = 0;
for (j = 1; j < i; j++) {
if(i % j == 0) {
a[la++] = j;
s += j;
}
}
if(s == i) {
printf("%d its factors is ",i);
for(k = 0; k < la; k++) {
printf("%d",a[k]);
if(k!=la-1){
printf(",");
}else{
printf("\n");
}
}
}
}
}
https://m.educity.cn/souti/4935ED43.html
答案在这,采纳一下哦!谢谢!🙈🙈🙈
#include "stdio.h"
int main()
{
int n,sum=0,count=0;
int a[105];
scanf("%d",&n);
for(i=1;i<n;i++)
{
if(n%i==0)
{
a[count++] = i;
sum+=i;
}
}
if(n==sum)
{
printf("%d its factors\n",n);
for (int i = 0; i <count;i++)
{
printf("%d", a[i]);
if (i == count - 1)printf("\n");
else printf(",");
}
}
else
printf("%d 不是完数\n",n);
return 0;
}
大概意思 自己循环1000内的完数吧 手打代码有点误差