算法15---数论3---水仙花数

算法15---数论3---水仙花数

简单地说。三维正整数在树枝上等于其各位数字的立方之和,称为水仙花数;

同样我们也可以定义一些更高等级的水仙花数,比如4位的,例如1634,1634位1,6,3,4的四次方和。

 1 //
 2 /*
 3     题目:水仙花数
 4     author taoliu——alex  2016.10
 5
 6     主要实现:
 7     1 找出给定位数内的水仙花数;
 8     2 判断一个数是不是水仙花数;
 9
10 */
11
12
13
14 #include <stdio.h>
15 #include <math.h>
16
17
18 //输出n为的水仙花数
19
20 void shuixianhua(int n)
21 {
22     long start,end;
23     long sum;
24
25     start=(long)pow(10,n-1);
26     end=(long)pow(10,n)-1;
27     for (long i = start; i <=end; i++)
28     {
29         long num=i;
30         sum=0;
31         for (int j = 0; j < n; j++)
32         {
33             long temp=num%10;
34             sum=sum+(long)pow(temp,n);
35             num=(num-temp)/10;
36         }
37         if (sum==i)
38         {
39             printf("%ld\n",i);
40         }
41
42     }
43 }
44
45
46 void  shuixianhua_judge(long n)
47 {
48     int digit=1;
49     long sum=0;
50     long temp ;
51     long num=n;
52     long num2=n;
53     while (num/10!=0)
54     {
55         digit=digit+1;
56         num=num/10;
57     }
58     printf("the digit is %d\n", digit);
59
60
61     for (int i = 0; i < digit; i++)
62     {
63         temp=num2%10;
64         //printf("%ld\n",temp);
65         sum=sum+(long)pow(temp,digit);
66         printf("%ld\n",sum );
67         num2=(num2-temp)/10;
68     }
69     //printf("%ld\n",sum);
70     if (sum==n)
71     {
72         printf("%ld is shuixianhua number\n",n);
73     }
74     else
75         printf("%ld is NOT shuixianhua number\n",n);
76
77 }
78
79
80 int main()
81 {
82      long num;
83      printf("please input the number you want to judge!\n");
84      scanf("%ld",&num);
85      shuixianhua_judge(num);
86
87
88      int n;
89      printf("give the digit you want to find!\n");
90      scanf("%d",&n);
91      shuixianhua(n);
92
93      return 0;
94 }
时间: 2025-01-14 07:58:04

算法15---数论3---水仙花数的相关文章

蓝桥杯 算法训练 ALGO-147 4-3水仙花数

算法训练 4-3水仙花数 时间限制:1.0s   内存限制:256.0MB 问题描述 打印所有100至999之间的水仙花数.所谓水仙花数是指满足其各位数字立方和为该数字本身的整数,例如 153=1^3+5^3+3^3. 样例输入 一个满足题目要求的输入范例.例:无 样例输出 153xxxxxx 题目解析: 这是一道简单的暴力破解的题目.只需分解出每个三位数的百位.十位和个位,然后计算其三次方是否等于该数即可. 示例代码: 1 public class Main { 2 public static

js算法集合(一) 水仙花数 及拓展(自幂数的判断)

js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,希望能对大家有所帮助. 1.验证一个数是否为水仙花数 ①要写水仙花数的算法,我们首先来了解一下什么是水仙花数,水仙花数是指一个 3位正整数 ,它的每个位上的数字的 3次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153): ②了解了什么是水仙花数我们就开始分析该怎么下手.通过定义来看

1015 水仙花数(枚举)

1015 水仙花数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 给出一个整数M,求 >= M的最小的水仙花数. Input 一个整数M(10 <= M <= 1000) Output 输出>= M的最小的水仙花数 Input示例 99 Output示例 153 加油 #inc

水仙花数&amp;素数&amp;质因数分解的C语言实现

最近,我翻了一下之前的C语言教材,看了三个有意思的小程序,包括:寻找"水仙花数".判断某数是否为素数.对一个数进行质因数分解.我想把这三个东西放到一个程序中,便写下了此文. 算法步骤 1. 寻找"水仙花数". "水仙花数"是指一个三位数,其各位数字的立方和等于该数本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. 2. 判断某数是否为素数. 素数是指只能被1和它本身整除的数,判断一个数是否为

算法之水仙花数(Java语言)

概述 在数论中,水仙花数(Narcissistic number),也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armstrong number) ,用来描述一个N位非负整数,其各位数字的N次方和等于该数本身. 举例 例如153.370.371及407就是三位超完全数字不变数,其各个数之立方和等于该数: 153 = 13 + 53 + 33. 370 = 33 + 73 + 03. 371 = 33 

Java算法题3.打印出所有的“水仙花数”。

[原创 转载注明出处] 题目3:打印出100-999所有的“水仙花数”. 思路: 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身. (例如:1^3 + 5^3+ 3^3 = 153) Java代码实现 1 package jichu; 2 3 public class jichu3 4 { 5 public static void main(String[] args) 6 { 7 int b, s, g; 8 for(int i = 100; i <

1015 水仙花数(水题)

1015 水仙花数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 取消关注 水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 给出一个整数M,求 >= M的最小的水仙花数. Input 一个整数M(10 <= M <= 1000) Output 输出>= M的最小的水仙花数 Input示例 99 Output示例 153 从m开始

三位水仙花数

1 #include <stdio.h> 2 #include <math.h> 3 4 5 int main() 6 { 7 /*三位水仙花数 8 概念:若三位数ABC满足ABC=A^3+B^3+C^3,则称为三位水仙花数.例如153=1^3+5^3+3^3,所以 153是水仙花数 9 10 实现步骤: 11 1. 输入两个数,表示区间[a,b],由于求解的是三位的水仙花数,所以a>=100,b<=999,且b>a 12 2. 实现算法,设数num,分解百位,十

51Nod 1016 水仙花数 V2(组合数学,枚举打表法)

1016 水仙花数 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153,1634 = 1^4 + 6^4 + 3^4 + 4^4). 给出一个整数M,求 >= M的最小的水仙花数. Input 一个整数M(10 <= M <= 10^60) Output 输出>= M的最小的水仙花数,如果没有符合条件的