许多人在学习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高级编程视频教程免费获取