用C语言编程找出1000以内的所有完数。(涉及知识点:for语句和if语句)。
5个回答
展开全部
一个数,所有的真因子(即除了自身以外的约数)的和,恰好等于本身,称为完数。
所以,要确认是否为完数,只要把所有真因子相加判断即可。
于是,这个题目的编程思路为:
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;
}
我自己写的 给分吧
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;
}
}
}
}
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;
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询