用C语言编程找出1000以内的所有完数。(涉及知识点:for语句和if语句)。

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-05
C语言编程,找出1000内的所有完数。

完数,即完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。其所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于本身。
根据该定义 可以得出判断完数的函数如下:
#include
int is_perfect_number(int n)
{
int i,s=0;
for(i = 1; i <=n/2; i ++)
if(n%i == 0) s+= i;//统计所有真因子的和。
if(s == n) return 1;//如果与原值相等,则该数为完数。

return 0;//不是完数。
}
根据该函数,只需要对需要打印的范围内1 ~1000做遍历,并逐一调用该函数判断,如果返回1则打印即可。
完整代码如下:
#include
int is_perfect_number(int n)
{
int i,s=0;
for(i = 1; i <=n/2; i ++)
if(n%i == 0) s+= i;//统计所有真因子的和。
if(s == n) return 1;//如果与原值相等,则该数为完数。

return 0;//不是完数。
}

int main()
{
int n;
for(n = 1; n < 1000; n++)
if(is_perfect_number(n)) printf("%d,",n);
}

#include

int main()
{
int i,j,sum;
for(i=2;i<1000;++i)
{
for(j=1,sum=0;j<i;++j)
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
printf("%d: its factors are 1",i);
for(j=2;j<i;++j)
{
if(i%j==0)
{
printf(",%d",j);
}
}
printf("
");
}
}
return 0;
}

一个数,所有的真因子(即除了自身以外的约数)的和,恰好等于本身,称为完数。

所以,要确认是否为完数,只要把所有真因子相加判断即可。

于是,这个题目的编程思路为:

1 遍历1~1000;

2 对每个数,判断是否为完数,如是,则输出;

3 程序结束。

代码如下:

#include <stdio.h>
int main()
{
    int n, i, s;
    for(n = 1; n <= 1000; n ++)
    {
        s = 0;
        for(i = 1; i <= n/2; i ++)
            if(n%i == 0) s+= i;//是真因子,累加。
        if(s == n) //是完数。
            printf("%d,",n);//输出。
    }
    
    return 0;
}


k=0; for(i=0;i<=1000;i++) { int a[]=0; for(j=1;j<=i;j++) if(i%j==0) a[k++]=j; }用手机打符号太麻烦了不写了 我说思路吧 用一个for循环控制从1到1000 再用一个找从1到它本身的完数 用数组存储它的完数 再用一个循环一个个的读取数组中的完数使其相加与数本身比较 相等就输出 这是我的思路或许还有很更简单 你做参考吧

#include<stdio.h>
int main()
{
int i,j;
int sum=0;
int count=0;
for(i=2;i<1000;i++)//遍历1~1000
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)//判断j是否为i的因子 是的话 对因子求和
sum+=j;
}
if(sum==i)//因子和等于其本身 count+1
{
printf("%d\n",i);
count++;
}
}
printf("共有%d个完数\n",count);
return 0;
}

我自己写的 给分吧

#include <stdio.h>
void main()
{
int i,j,k,t,a,c,s,p,sum;
int b[999]={0};
sum=0;s=0;
for(i=0;i<=9;i++)
{ for(j=0;j<=9;j++)
{ for(k=0;k<=9;k++)
{
t=100*i+10*j+k;
if(t==0) continue;
for(a=1;a<t;a++)
{
if(t%a==0) b[a-1]=a;
else b[a-1]=0;
}
for(s=0,c=0;c<=998;c++)
{
if(b[c]>0)
{ s=s+b[c];
}
}
sum=s;
if(t==sum)
{
printf("%d its factors are ",t);
for(p=0;p<t;p++)
{
if(b[p]>0)
printf("%d,",b[p]);
else continue;
}
printf("\n");
}
else continue;
}
}
}
}

11111

  • 用C语言编程找出1000以内的所有完数。(涉及知识点:for语句和if语句...
    答:1 遍历1~1000;2 对每个数,判断是否为完数,如是,则输出;3 程序结束。代码如下:include <stdio.h>int main(){ int n, i, s; for(n = 1; n <= 1000; n ++) { s = 0; for(i = 1; i <= n/2; i ++) if(n%i == 0) s+= i;//是真因子,累加。
  • C语言题目 编程 找出1000以内的所有”完数“,所谓”完数“是指一个数...
    答:int main(){ int i,j,s;for(i=2;i<=1000;i++){ s=1;for(j=2;j<=i/2;j++)if(i%j==0)s+=j;if(s==i)printf("%d\n",i);} getch();return 0;}
  • ...这个数就叫做完数.用C语言编程找出1000之内的所有完数
    答:/*一个数恰好等于它的因子之和.6=1+2+3*/ include <stdio.h> /*头文件*/ define N 1000 /*搜索范围在1000以内*/ int main(int argc, char *argv[]) /*主函数*/ { int i; /*循环变量*/ for(i=1;i<=N;i++) /*循环找出小于N的所有完数并输出其因子.*/ { if(wanshu(i))...
  • 编程 输出1000以内所有完全数 统计个数
    答:外层循环用来遍历1000以内的所有数字,内层循环用来找到当前数字`i`的所有因子并计算它们的和,如果这个和等于当前数字`i`,那么`i`就是一个完全数,此时输出它并将`count`加1。最后输出完全数的个数。
  • 如何用c语言编程找出1000以内的所有完数。
    答:编程找出1000以内的所有完数,我们可以使用一个循环来遍历1到1000之间的每个数字,然后使用另一个循环来遍历该数字的所有因子(除了它本身),并检查它们的和是否等于该数字本身。如果是,则该数字是一个完数,我们可以将其打印出来。完数指的是一个数恰好等于它的因子之和(不包括它本身),比如6就是一...
  • ...数就称为“完数”。编写程序找出1000之内的所有完数
    答:源代码如下:include <stdio.h> main(){ int i,j;int sum;for(i=1;i<=1000;i++){ sum=0;for(j=1;j<i;j++){ if(i%j==0)sum+=j;} if(sum==i){ printf("%d its factors are ",i);for(j=1;j
  • ...这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有...
    答:c语言一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数 #include<stdio.h> void main() { int i,j,sum=1; for(i=3;i<=1000;i++) { sum=1; for(j=2;j
  • ...这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有...
    答:int sum = 0;//因子总和 for (int j = 1; (j * j) <= i; j++) {//j做除数,√n复杂度,减少一半的计算量 if (i % j == 0) {//可以整除,为其因子 sum = j + (i / j) + sum;//因子之和 } } if ((sum - i) == i) cout << "1000以内的完数:" << i <...
  • c语言编程 计算1000以内的完全数,每8个数字一行。
    答:h> int main(){ int x,k,f=0,n;for(x=2;x<=1000;x++){ n=0;//注意每次循环n都要为0 for(k=1;k<x;k++)//注意k要从1开始 if(x%k==0)n=n+k;if(n==x){ printf("%d ",x);f++;if(f%8==0)printf("\n");} } } //其实1到1000内只有6 28 496这三个 ...
  • ...例如6=1+2+3.编程找出1000以内的所有完数。
    答:include"stdio.h"main(){ int j,i,k=0;for(j=6;j<1001;j++){ for(i=1;i<=j/2;i++)if(j%i==0)k+=i;if(j==k){ printf("%4d its factors are ",k);for(i=1;i<=j/2;i++)if(j%i==0)printf("%d,",i);printf("\b \n");} k=0;} getch()();} ...