A. c語言中求完全數
#include <stdio.h>
#include <math.h>
int main()
{
int a,i;
for(a=1;a<=1000;a++){
int A[100]={0},j;
j=0;
for(i=1;i<a;i++){ //i<sqrt(a) ——》並不是判定質數,需要找出除本身外所有因數
if(a%i==0){ //a/i==0 ——》/是求商,%才是取余
A[j]=i; //A[j]=a ——》A[j]應存儲的是a的因數,而不是它本身
j++;
}
}
int n,b;
n=j;
b=a;
for(j=j-1;j>=0;j--){
b=b-A[j];
}
if(b==0){
printf("%d=",a);
for(j=0;j<n-1;j++){
printf("%d+",A[j]);
}
printf("%d\n",A[j]);
}
}
return 0;
}
B. C語言求完數
/*完數,即完美數,一個數如果恰好等於除它本身外的因子之和,這個數就稱為完數。例如6=1+2+3.(6的因子是1,2,3)*/
#include<stdio.h>
void main()
{
int i,j,k,h,s,sum;
int a[200];//20個是不夠的
s=0;
sum=0;
for(i=2;i<=1000;i++)
{
s=0;//此處s=0一定要加,因為前幾次循環的時候s的值已經改變
k=0;
for(j=1;j<i;j++)
{
if((i%j)==0){a[k]=j;k++;}
}
for(h=0;h<k;h++)
{
s+=a[h];
}
if(i==s){printf("%d ",i);sum++;}
}
printf("完數的個數:%d\n",sum);
}
時間太緊,沒注意程序的簡潔性和效率,這個需要你自己改了!
C. 運用c語言輸出100以內所有的完全數
#include<stdio.h>
int main()
{
int x, i, sum;
for (x = 3; x <= 1000; x++)
{
sum = 1; //初始化sum
for (i = 2; i <= x/2 ; i++) //從2開始,1不是完數
{
if (x%i == 0)sum +=i;
}
if (sum == x)printf("%d its factors are 1 ", x);//找到完數,感覺是為了「,」處理方便,所以在這里的末尾加了1
if (sum == x)
{
for (i = 2; i <= x / 2; i++)
{
if (x% i == 0)printf(",%d ", i);//找到完數的因子
}
printf(" ");
}
}
return 0;
}
(3)求完全數數c語言代碼擴展閱讀:
如果一個數恰好等於它的因子之和,則稱該數為「完全數」。
第一個完全數是6,它有約數1、2、3、6,除去它本身6外,其餘3個數相加,1+2+3=6。
第二個完全數是28,它有約數1、2、4、7、14、28,除去它本身28外,其餘5個數相加,1+2+4+7+14=28。
第三個完全數是496,有約數1、2、4、8、16、31、62、124、248、496,除去其本身496外,其餘9個數相加,1+2+4+8+16+31+62+124+248=496。後面的完全數還有8128、33550336等等。
D. c語言編程 計算1000以內的完全數,每8個數字一行。
#include <stdio.h>
int main()
{
int x,k,f=0,n;
for(x=2;x<=1000;x++)
{
n=0;//注意每次循環n都要為0
for(k=1;k<x;k++)//注意k要從1開始
if(x%k==0)
n=n+k;
if(n==x)
{
printf("%d ",x);
f++;
if(f%8==0)
printf("\n");
}
}
}
//其實1到1000內只有6 28 496這三個
E. 運用c語言輸出100以內所有的完全數
1、首先打開vs 2017軟體,打開一個准備好的工程,新建一個C語言文件,先寫入頭文件和main函數,裡面定義需要的用到的4個變數。
F. 用c語言怎樣編寫n個數以內的完全數的程序
完全數是指所有真因子之和等於該數本身的正整數。可以使用以下C語言代碼來找出小於等於n(n為正整數)的完全數:
```c
#include <stdio.h>
int main() {
int n, i, j, sum;
printf("請輸入一個正整數n:");
scanf("%d", &n);
for (i = 1; i <= n; ++i) {
sum = 0;
for (j = 1; j <= i / 2; ++j) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
解釋如下:
1. 首先,定義變數n、i、j和sum。
2. 要求用戶輸入n。
3. 使用兩個嵌套的循環來遍歷從1到n的每個數字。
4. 內部手宴循備肢環計算數字i的所有真因子之和。
5. 如果該總和等於仿薯世數字i本身,則輸出該數字,即它是一個完全數。
6. 最後返回0結束程序。
注意,此代碼中包含了一個優化,即內部循環只需要遍歷1到i的一半,因為大於i的一半的因子已經在之前被計算過了。
G. C語言程序調試(求正整數n以內的所有完全數)
#include"stdio.h"
int
main()
{
int
i,j,sum,n;
printf("求正整數n以內的所有完全數");
printf("\n解:\n請輸入n:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
printf("%d\n",i);
}
}