水仙花数的c语言程序

2024-09-18

水仙花数的c语言程序(共2篇)

水仙花数的c语言程序 篇1

水仙花数的实现是一个比较经典的算法题,今天我们首先在vfp中来实现它,

首先我们了解一下什么是“水仙花数”。所谓水仙花数是指一个n位数,其各位数字立方和等于该数本身的值,例如:153=13+53+33,所以153是一个水仙花数。

我们来做一个简单点儿的:求解3位数的水仙花数,即100至999之间的水仙花数。很明显这个程序需要使用循环,并且从水仙花数的概念可知,其重点是求解出循环变量当前值的各位数字的值。剩下的工作就简单了,把求解出的各位数字的立方和与循环变量当前值进行比较,如果相等则说明这是一个水仙花数,输出它即可。相关说明见代码注释。本文发表于编程入门网:www.bianceng.cn

我们用表单来实现这个例子,运行时如下图:

参照上图开始我们的制作:

一、新建表单,向表单上添加一个标签控件,caption属性值设置为“显示100到999间的水仙花数”;添加两个命令按钮command1和command2,并将它们的caption属性值分别设置为“开始”和“清除”;添加一个编辑框控件Edit1,属性值均采用默认的,

二、添加事件代码:

1、“清除”按钮的click事件:

thisform.edit1.value=“”

thisform.refresh

2、“开始”按钮的click事件:

local i,a,b,cfor i=100 to 999 a=int(i/100) &&百位的值等于这个三位数除以100后取整 b=int((i-100*a)/10) &&用这个三位数减去它的百位数字与100乘积, &&对得到的差除以10后进行取整,结果就是十位的值 c=i-int(i/10)*10 &&与上面原理相同,这是求个位的值 if i=a^3+b^3+c^3 &&成立说明是水仙花数并输出 thisform.edit1.value=thisform.edit1.value+str(i,5)+chr(13) &&用chr(13)换行 endifendfor

OK了,运行表单吧。

水仙花数的c语言程序 篇2

对于这些特殊数的处理,很多都可以用穷举法来解决。我们先来了解一下,什么是穷举法。穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。下面通过几个实例,来对特殊数编程处理方法进行探索。

1质数

质数的定义:除了1 和本身外,不能被其他任何自然数整除的自然数叫做质数,又叫做素数。

例:编一函数int fun(int x),判断x是否为质数。

分析:要处理好该问题,就要从定义入手,定义强调质数只能被1 和本身整除,不能被其他任何自然数整除,我们就要围绕这个来进行验证,也就是说:除了1和本身以外,如果能找到其他能整除的自然数,就不是质数。本题就是典型的穷举法的例子。函数如下:

拓展:仅判断一个数是否为质数,是比较简单的,实际应用中往往要找出多个质数,这就需要在循环的外面再嵌套一个循环,用于控制查找的范围,再将质数作相应的处理即可。验证哥德巴赫猜想则是两次判断质数的例子。

2 完全数

完全数的定义:如果一个数恰好等于它的所有的真因子(即除了自身以外的约数)之和,则称该数为完全数,又称完美数或完备数。(如:6=1+2+3,28=1+2+4+7+14,6 和28 都是完全数)

例:编一函数fun(int x),判断x是否为完全数。

分析:本题的关键就是将x以内的所有数过滤一下,从中找出真因子进行累加,最后看累加的和与原数是否相等。本题也是典型的穷举法的例子。函数如下:

拓展:如果需要找出多个完全数,就要确定查找的范围,在循环外再嵌套一个循环。

3水仙花数

水仙花数的定义:水仙花数是指一个n位数( n≥3 ),它的每个位上的数字的n(以3 为例) 次幂之和等于它本身,又称阿姆斯特朗数。(例如:153=1^3 + 5^3+ 3^3,153 就是一个水仙花数)。

例:编一函数int fun(int x),判断x是否为水仙花数(3 次幂)。

分析:本题的关键就是要找出x的每一位数y,如果x仅仅是三位数,可以分别求出百位数、十位数和个位数,用b=x/100s=x/10%10;g=x%10;可以解决,如果不知道x的位数,可以循环求出它的最低位,再求出最低位的立方和来实现。函数如下:

拓展:同样若要找出若干个水仙花数,就是在循环外再嵌套一个循环,用于控制查找的范围,再把水仙数作相应处理,而查找并判断的过程则是穷举法。

4同构数

同构数的定义:同构数是出现在它的平方的右边的数。(例如,6出现在其平方数36的右边,76出现在其平方数5776的右边,6与76都是同构数。)

例:编一函数fun(int x,int a[]),找出x(x<1000)以内的所有同构数,存放于a数组,返回同构数的个数。

分析:本题就是对x以内所有的数进行过滤,求出x的平方,看看是否出现在平方数的右边,同时要注意,x可能是一位数、两位数或三位数,就要分别用到%10,%100,%1000。函数如下:

拓展:对于同构数,要根据自身的位数来确定相应的m,即除以m取余得到的数的位数与其一致,当x的范围扩大时,m也要随之发生变化。

5回文数

回文数的定义:正读与反读都一样的数。(如:1,11,121,1221等等)

例:编一函数int fun(int x),判断x是否为回文数。

分析:要判断x是否为回文数,首先要求出x的逆序数,然后判断其逆序数是否与本身相等。函数如下:

拓展:实际应用中,需要判断多个回文数,那就需要对多个数逐一进行判断。同时,将一个非回文数,加上该数的逆序数后,就可能成为回文数。若仍然是非回文数,则重复若干次上述步骤,总能得到回文数。

以上特殊数的处理方法是中职学生在实际应用中,经常遇到的,也是近几年江苏省计算机专业对口单招考试中主要考点,主要考查学生对循环和分支语句的灵活运用。需要大家平时多注意积累,多动脑筋,记住特殊数的处理方法,并将方法灵活运用到平时的学习中去。中职学生包括广大编程爱好者要多总结,从而对循环及分支语句的使用能有进一步的了解。当然编程方法不唯一,希望大家八仙过海,各显神通。

摘要:在计算机编程语言的学习过程中,我们会遇到一些特殊数的编程处理方法,包括质数、完全数、水仙花数、同构数、回文数等等。该文主要以C语言编程为例,对这些特殊数的编程方法进行探索,让大家对循环语句和分支语句有进一步的了解。

上一篇:门球场改造的请示下一篇:产品资料介绍