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以內,肯定不會有太多因子。每個循環開始的時候,初始化數組,加個控制條件,控制數組的下標。自己先嘗試一下吧。
有什麼問題,可以再詳說。