用c语言求完数
① c语言程序设计 求完数
#include<stdio.h>
#include<math.h>
intw(intx)
{
inti,sum=1;
for(i=2;i<=sqrt(x);i++)
{
if(x%i==0)
{
sum+=i+x/i;
}
}
if(sum==x&&x!=1)
{
return1;
}
else
{
return0;
}
}
intmain()
{
inti,n,m,a[10],j;
scanf("%d%d",&n,&m);
for(i=n,j=0;i<=m;i++)
{
if(w(i))
{
a[j++]=i;
}
}
if(j==0)
{
printf("NIL ");
}
else
{
for(i=0;i<j;i++)
{
if(i<j-1)
{
printf("%d",a[i]);
}
else
{
printf("%d",a[i]);
}
}
}
return0;
}
② C语言求完全数~~
#include<stdio.h>
void isPerfect(int m){ //定义判断一个数是否为完全数的函数isPerfect
int i,sum=0;
for(i=1;i<=m/2;i++){
if(m%i==0){
sum+=i;
}
}
if(sum==m){
printf("你输专入的这个数是完全数\n");
}
else
printf("你输入的这个数不是属完全数\n");
}
main(){
int a;
printf("请输入一个整数a:\n");
scanf("%d",&a);
isPerfect(a);//调用这个函数
}
③ C语言求完数问题
虽然你用的是指针,但实际上你要返回的应该还是一个数组,因为你用指针存储内数据的话肯定会出容问题的。像:崩溃。
所以你在fun函数里应该定义一个数组,返回的也是这个数组,int
p[10];return
p;
主函数里也是这样,int
sum[10],sum=fun(n);
这样的话应该就没问题了。
还有:那个for(i=0;i<n;i++)应该是for(i=1;i<n;i++)
④ 用C语言输出1000以内所有的完数
用C语言输出1000以内所有的完数步骤如下:
1、首先打开vc6.0,新建一个项目。
⑤ 用C语言编写求1000内的完数。。。
你如果是想学编程,这个程序是很简单的,最好自己写写,然后自己调试一下,那样你才能进步哦。我给你贴一个代码,你自己作参考就是了哈,还有其他的写法
#include<stdio.h>
void main()
{
int n,i,a;
for(n=2;n<=1000;n++)
{
a=0;
for(i=1;i<=n/2;i++)
if(n%i==0)
a=a+i;
if(a==n)
{ printf("%-5d its factors are 1",n);
for(i=2;i<n;i++)
if(n%i==0)
printf(",%d",i);
printf("\n");
}
}
printf("\n");
}
⑥ 用C语言求完数
//有三个,6,28,496
#include<stdio.h>
void main()
{
int i,j,k,sum;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<=i/2;j++)
if(i%j==0) sum+=j;
if(sum==i)
{
printf("%d\t的因子专是属:",i);
for(j=1;j<=i/2;j++)
if(i%j==0) printf("%d ",j);
printf("\n");
}
}
return;
}
⑦ c语言求解完数!
#include<stdio.h>
int main()
{
int i,j,sum=0;
int count=0;//计算完数的和
for(i=2;i<1000;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0) sum=sum+j;
}
if(sum==i)
{
printf("%d 是完数\n",i);
count+=i;
}
sum=0;
}
printf("完数和为: %d\n",count);
return 0;
}
⑧ C语言求完数。
思路是正确的,但是程序你写错了点地方。while循环体内,改成sum+=a,你原来的写法,sum=+b,第专一不对,第二属即使符合条件,根据if中的判断条件,b也恒等于0。
第二个问题,可以使用一个静态数组解决,因为完数在1000以内,肯定不会有太多因子。每个循环开始的时候,初始化数组,加个控制条件,控制数组的下标。自己先尝试一下吧。
有什么问题,可以再详说。