Ⅰ 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;
}