Ⅰ c语言构建子函数求1~1000的完全数
#include<stdio.h>
#include<time.h>
intsum(intn)
{ints=0,i;
for(i=1;i<=n/2;i++)
if(n%i==0)s+=i;
returns-n;
}
intmain()
{inti,a[1001];
printf("亏数:
");
for(i=1;i<1001;i++)
{a[i]=sum(i);
if(a[i]<0)printf("%5d",i);
}
printf("
盈数:
");
for(i=1;i<1001;i++)
if(a[i]>0)printf("%5d",i);
printf("
完全数:
");
for(i=1;i<1001;i++)
if(!a[i])printf("%5d",i);
printf("
花时:%.3f秒
",clock()/1000.0);
return0;
}
Ⅱ 用C语言编程找出1000以内的所有完数。(涉及知识点:for语句和if语句)。
一个数,所有的真因子(即除了自身以外的约数)的和,恰好等于本身,称为完数。
所以,要确认是否为完数,只要把所有真因子相加判断即可。
于是,这个题目的编程思路为:
1 遍历1~1000;
2 对每个数,判断是否为完数,如是,则输出;
3 程序结束。
代码如下:
#include<stdio.h>
intmain()
{
intn,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);//输出。
}
return0;
}
Ⅲ c语言 求1-1000的完数然后输出要求有点高。
#include<stdio.h>
void PerfectNum()
{
int m,n,j,i,count,count1=0,a[40],sum[10],sum1=0; //问题1
int k;
for(m=2;m<=1000;m++)
{
k=m/2,n=0,i=0;
count=0;
for(j=1;j<=k;j++)
{
if(m%j==0)//判断j是否为m的因子
{
n=n+j;//求因子的和
a[count++]=j;
}
}
if(n==m)//判断m是否等于因子的和
{
sum[count1++]=n; //问题2
sum1+=n; //问题3
printf("%d=",n);
for(j=0;j<count;j++)
printf("%d+",a[j]);
printf("\b \n");
}
}
for(i=0;i<count1;i++)
printf("%d+",sum[i]);
printf("\b=%d\n",sum1);
}
int main(void)
{
PerfectNum();
return 0;
}
Ⅳ 用c语言 输出1~1000的所有完数
# include <stdio.h>
int ws(int n)
{
int i,k,j=0;
for (i=1;i<n;i++)
{
k=n%i;
if (k==0)
j+=i;
}
if (j==n)
return 1;
else
return 0;
}
void main()
{
int i,result;
for (i=1;i<=1000;i++)
{
result=ws(i);
if (result==1)
printf("%d ",i);
}
}
Ⅳ 用C语言求1000以内的完数
完数,即完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。其所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于本身。
根据该定义 可以得出判断完数的函数如下:
#include <stdio.h>
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 <stdio.h>
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);
}
Ⅵ C语言求 1000以内的完全数
重置sum的位置错了,放到内循环的开头:
#include<stdio.h>
intwanquanshu()
{
intn,i,k,sum;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
sum=0;//放在这里
for(k=1;k<i;k++)
{
if(i%k==0)
{
sum=sum+k;
}
}
if(sum==i)
{
printf("%d ",i);
}
}
}
return0;
}
voidmain()
{
wanquanshu();
}
Ⅶ c语言 求1-1000的完数
很简单,你定义结构体就行了。
Ⅷ c语言:输出1-1000之间的所有完数,5个一行输出.
你确定题目是正确的?
1000以下的完数一共3个,何来5个一行输出?这个是基本的初中数学基础
参考程序如下
#include<stdio.h>
int
main()
{
int
n,i,j,k,s;
n=0;
for(i=1;i<=1000;i++)
{
s=0;
for(j=1;j<i;j++)
if(i%j==0)
s+=j;
if(s==i)
{
printf("%d
",i);
n++;
if
(n%5==0)
printf("\n");
//这里不可能执行的
}
}
printf("\n");
}
Ⅸ c语言 求1~1000之间的完数
给你正确的程序,你对比着看吧。不是很难理解
#include <stdio.h>
int main()
{
int n=1000;
int r,j,i;
for(i=1;i<n; i++)
{
r = 0;
for(j=1;j<i;j++)
{
if(i%j == 0)
{
r = r + j;
}
}
if(r == i)
{
printf("the result is:%d\n",r);
r = 0;
}
}
return 0;
}