生活随笔
收集整理的這篇文章主要介紹了
C语言求完数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解題思路:
分析:
1.輸入N
2.掃描每一個1~N的數
3.將當前數字的因子分解出來,累加當前因子求和,將這個數的所有因子保存到數組a中?
4.用因子的和與當前數字對比,若相等即是完數,輸出這個完數和它的因子
5.刷新當前數據,使sum和數組a恢復到初始狀態以便于下一個數字的查找
6.直到掃描完所有數據程序結束
注意事項:數組的空間要足夠大,有些數的因子很多不足夠保存,盡量大點,雖然數組分配20多這個題目就夠了,但是懷著探索精神在遇到更大的數比如10000~10000000等等,這個數組的空間不足以保存他們的因子了
?
參考代碼:
#include<stdio.h>
int main()
{int sum=0,a[300],k=0;//long double N;int N;scanf("%d",&N);for(int i=1;i<=N;i++)//全面掃描1~N之間的數,找出每一個完數 {for(int j=1;j<i;j++)//求出這個數的因子 {if(i%j==0) {a[k]=j;// 將這個數的因子保存到數組a中 k++;sum+=j; //將這個數的每一個因子累加起來 }}if(sum==i)//判斷這個數是否是完數 {printf("%d its factors are ",i);//輸出完數 for(int p=0;p<k;p++)//輸出這個完數的所有因子 {if(p==k-1)//如果當前因子是最后一個因子 則取消空格,若不是最后一個因子則加上空格 printf("%d",a[p]);elseprintf("%d ",a[p]); } printf("\n");//打印完后換行 }sum=0;//刷新當前數據使其恢復初始狀態,繼續掃描下一個數 k=0;//刷新數組使其恢復初始狀態,用來保存下一個數的所有因子 }return 0;
}
?
總結
以上是生活随笔為你收集整理的C语言求完数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。