首页 > 试题

幂数

更新时间:2022-11-14 01:43:41 阅读: 评论:0

中考语文常考名著-break的短语


2022年11月14日发(作者:学习雷锋好榜样读后感)

趣味算法--⾃幂数

⾃幂数

⾃幂数是指⼀个n位数,它的每个位上的数字的n次幂之和等于它本⾝(例如:1^3+5^3+3^3=153)。⾃幂数包括:

⼀位⾃幂数:独⾝数

⼆位⾃幂数:没有

三位⾃幂数:⽔仙花数

四位⾃幂数:四叶玫瑰数

五位⾃幂数:五⾓星数

六位⾃幂数:六合数

七位⾃幂数:北⽃七星数

⼋位⾃幂数:⼋仙数

九位⾃幂数:九九重阳数

⼗位⾃幂数:⼗全⼗美数

常见⾃幂数

三位的⽔仙花数共有4个:153,370,371,407;

四位的四叶玫瑰数共有3个:1634,8208,9474;

五位的五⾓星数共有3个:54748,92727,93084;

六位的六合数只有1个:548834;

七位的北⽃七星数共有4个:1741725,4210818,9800817,9926315;

⼋位的⼋仙花数共有3个:24678050,24678051,88593477

九位的九九重阳数共有4个:146511208,472335975,534494836,912985153

求n位⾃幂数

现在我们⽤代码来实现求各个位数的⾃幂数。

1#include

2

3//⾃定义my_pow函数,C语⾔⾃带的pow函数返回值为double类型

4//转long类型精度会缺失。

5longintmy_pow(inta,intn)

6{

7longresult=1;

8inti=0;

9for(i;i

10result*=a;

11

12returnresult;

13}

14

15//判断是否为⽔仙花数

16intisNarNum(longintnum,intn)

17{

18longintnumber=num;

19longintresult=0;

20

21inti;

22//获取各个位数,并求n次幂之和

23for(i=n-1;i>=0;i--)

24{

25result+=my_pow(number%10,n);

26number/=10;

27}

28

29returnresult==num?1:0;

30}

31

32//打印n位的⽔仙花数

33voidprintNarNum(intn)

34{

35longstart=my_pow(10,n-1);//n位数的起始位数

36intcount=0;//⽤于统计有多少个⾃幂数

37longnum=0;

38//打印⾃幂数

39for(num=start;num

40{//如果是⾃幂数则打印

41if(isNarNum(num,n))

42{

43printf("%ld是⾃幂数。",num);

44count++;

45}

46}

47printf("%d位的⾃幂数有%d个。",n,count);

48}

49

50intmain(void)

51{

52intn=0;

53printf("请输⼊求⼏位数的⾃幂数:");

54scanf("%d",&n);

55

56printNarNum(n);

57

58return0;

59}

60

61C语⾔实现求n位数⾃幂数

C语⾔实现求n位数⾃幂数

代码测试结果

r;

2

3publicclassNarNum{

4

5/**

6*⽤于判断⼀个数是否是⾃幂数。

7*@paramnum是需要进⾏⾃幂数判断的数。

8*@paramn需要判断的数的位数。

9*@return如果num是⾃幂数返回true,否则返回fal。

10*/

11publicstaticbooleanisNarNumber(longnum,intn){

12longtag=num;//将num赋值给tag,⽤于结果的判断

13longsum=0;//⽤于存储每个位上的数字的n次幂之和

14

15/*获取num的各个位的数*/

16for(inti=n-1;i>=0;i--){

17sum+=(num%10,n);

18num/=10;

19}

20

21returnsum==tag?true:fal;

22}

23

24/**

25*打印⾃幂数⽅法。

26*@paramn打印n位数的⾃幂数。

27*/

28publicstaticvoidprintNarNumber(intn){

29longnum=(long)(10,n-1);//n位数开始数字

30inttotal=0;//⽤于统计n位⽔仙花数的个数

31/*打印⾃幂数*/

32for(longi=num;i

33if(isNarNumber(i,n)){

n(i+"是⾃幂数。");

35total++;

36}

37}

n(n+"位的⾃幂数有:"+total+"个");

39}

40

41publicstaticvoidmain(String[]args){

42Scannerinput=newScanner();

n("请输⼊⾃幂数的位数:");

44intsize=t();

45

46printNarNumber(size);

47}

48}

Java实现求n位数⾃幂数

代码测试结果

1defisNarNumber(num,n):

2'''⽤于判断⼀个数是否位⼀个⾃幂数'''

3strNum=str(num)

4sum=0

5foriinstrNum:

6sum=sum+pow(int(i),n)

7returnTrueifsum==numelFal

8

9defprintNarNumber(n):

10'''⽤于n位数的⾃幂数'''

11total=0

12foriinrange(pow(10,n-1),pow(10,n)):

13ifisNarNumber(i,n):

14print("%d是⾃幂数。"%i)

15total+=1

16print("%d位的⾃幂数有%d个。"%(n,total))

17

18n=int(input("请输⼊⾃幂数的位数:"))

19

20printNarNumber(n)

Python实现求n位⾃幂数

代码测试结果:

由于本⼈的电脑配置有点差,最多只测试了9位数的⾃幂数(Java和Python运⾏了20多分钟才运⾏完,10位数测了2个⼩时还没打印出⼀个

就关闭程序了),想知道10位及以上位数的⾃幂数请⾃⾏测试。

推荐⽤C语⾔代码进⾏测试,执⾏速度⽐Java和Python快很多,虚拟机上测试9位数不到4分钟就出结果了。

本文发布于:2022-11-14 01:43:41,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/14641.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:扁担拼音
标签:幂数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图