許多人在學習C語言編程之前,就知道C語言編程對于工作或者生活有很大的好處,但是卻不知道具體的作用是什么。在我們讀書時期,時常會需要求某個范圍符合要求的數據有多少,以前時常會利用數數或者一些公式來了解,雖然能求得結果,但如果數據過大就比較麻煩,今天就以c語言編程怎么求完數來帶大家體會C語言編程的奧妙
題目要求:如果一個數恰好等于它的因子之和,那么這個數就被稱為完全數。例如6的因子為1,2,3,而6=1+2+3,因此6是一個完全數。求出1000以內的完全數。
題目分析:
本題最為直接的解法就是利用窮舉法在1~1000以內判斷每個數是否是完全數,如果是完全數就輸出之。問題的關鍵就是如何判斷一個數a是否是完全數。它要分為兩個步驟完成:
(1)求出a的所有因子a1,a2…an的和sum;
(2)判斷a1+a2+…+an的和sum是否等于a,如果sum等于a則a是完全數,否則a不是完全數。
#include"stdio.h"#define max 100Perm(int a[], int n ,int s ,int r[], int m){ int i,j,k,flag=0; int b[max];/*數組b存放子序列*/ for(i=0;i<n;i++){ flag = 1; r[s] = a[i];/*復制數列a中第i個元素到數組r*/ j = 0; for(k=0;k<n;k++)/*產生子序列b*/ if(i != k){ b[j] = a[k]; j++; } Perm(b,n-1,s+1,r,m);/*全排列子序列b*/ } if(flag == 0){/*得到一種排列結果*/ printf("\n"); for(k=0;k<m;k++) printf("%d",r[k]);/*輸出存放排列結果的數組r中的內容*/ printf("\n"); }}main(){ int a[max] , r[max]; int i,n; printf("Please input the number of digit inthe array\n"); scanf("%d",&n);/*輸入待排列的數列中元素的個數*/ printf("Please input a string for array\n"); for(i=0;i<n;i++)/*輸入數列中的元素(整數)*/ scanf("%d",&a[i]); Perm(a,n,0,r,n);/*全排列操作*/ getche();
運行結果:
以上就是“c語言編程怎么求完數”的詳細內容,只需要幾行代碼就可以快速得到答案,你也想要學嗎?如果想要了解更多C語言教程歡迎持續關注編程學習網。
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://phpxs.com/post/9821/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料
查 看2022高級編程視頻教程免費獲取