Java和C语言分别实现水仙花数及拓展代码

目录
  • 前言
  • 一、水仙花数
    • 1.代码(Java)
    • 2.运行结果(Java)
    • 3.代码(C语言)
    • 4.运行结果(C语言)
  • 二、拓展
    • 1.代码(Java)
    • 2.运行结果(Java)
    • 3.代码(C语言)
    • 4.运行结果(C语言)

前言

求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。)

一、水仙花数

因为水仙花数是三位数,所以我们把范围定为100~999。

1.代码(Java)

public class Num {
    public static void main(String[] args) {
        for(int n = 100;n <= 999;n++){
            int count = 0;
            int tmp = n;
            while(tmp != 0){
                count++;
                tmp = tmp/10;
            }
            tmp = n;
            int sum = 0;
            while(tmp != 0){
                sum += Math.pow(tmp%10,count);
                tmp = tmp/10;
            }
            if(sum == n){
                System.out.println(sum);
            }
        }
    }
}

2.运行结果(Java)

3.代码(C语言)

其中的一种方法,只输出水仙花数,下文会进行拓展。

#include <stdio.h>
int main()
{
	int n = 0;
	int a, b, c = 0;
	printf("水仙花数为:\n");
	for (n = 100; n <= 999; n++)
	{
		a = n / 100;
		b = n / 10 % 10;
		c = n % 100 % 10;
		if (n == a * a * a + b * b * b + c * c * c)
			printf("%d\n", n);
	}
	return 0;
}

4.运行结果(C语言)

二、拓展

已知三位自幂数为水仙花数,一位自幂数为独身数,不存在二位自幂数,以此类推还有四叶玫瑰数,五角星数,六合数,北斗七星数,八仙数,九九重阳数,十全十美数的自幂数。

求出0-100000中的自幂数?

只要将上文代码稍微改下数值就可以实现。

1.代码(Java)

public class Num {
    public static void main(String[] args) {
        for(int n = 0;n <= 100000;n++){
            int count = 0;
            int tmp = n;
            while(tmp != 0){
                count++;
                tmp = tmp/10;
            }
            tmp = n;
            int sum = 0;
            while(tmp != 0){
                sum += Math.pow(tmp%10,count);
                tmp = tmp/10;
            }
            if(sum == n){
                System.out.println(sum);
            }
        }
    }
}

2.运行结果(Java)

3.代码(C语言)

由于上文提到的方法只适用于三位数,显然不能输出0-100000中的所有自幂数,所以我们用适用更广的方法。

#include <stdio.h>
#include <math.h>
int main()
{
	int n = 0;

	for (n = 0; n <= 100000; n++)
	{
		int count = 1;
		int tmp = n;
		int sum = 0;
		while (tmp/10)
		{
			tmp = tmp / 10;
			count++;
		}
		tmp = n;
		while (tmp)
		{
			sum = pow(tmp % 10, count) + sum;
			tmp = tmp / 10;
		}
		if (sum == n)
			printf("%d\n", sum);
	}
	return 0;
}

可以看到两种语言的代码都很相似。

4.运行结果(C语言)

到此这篇关于Java和C语言分别实现水仙花数及拓展代码的文章就介绍到这了,更多相关水仙花数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java计算任意位水仙花数示例(回文数)

    可计算任意位水仙花数 复制代码 代码如下: public static void main(String[] args) {  int max = 10;  for (int len = 1; len <= max; len++) {   System.out.println(getNarc(len, ""));  } } static StringBuffer strb = new StringBuffer(); static String getNarc(int len, S

  • java计算自幂数和水仙花数

    (例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数)n为1时,自幂数称为独身数.n为2时,没有自幂数.n为3时,自幂数称为水仙花数.n为4时,自幂数称为玫瑰花数.n为5时,自幂数称为五角星数.n为6时,自幂数称为六合数.n为7时,自幂数称为北斗七星数.n为8时,自幂数称为八仙数.n为9时,自幂数称为九九重阳数.n为10时,自幂数称为十全十美数. 复制代码 代码如下: /* * 自幂数 * 自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等

  • C语言水仙花数的实现

    什么水仙花数? 水仙花数其实是自幂数的一种,自幂数是一个自然数中它每个个位上的数字n次方相加之和为它本身!,这里n可以称为立方指数! 而水仙花数的n次方的n是3,这里3可以称为自然数的立方指数 次方即为自身相乘多少次,一般用^表示,比如1的3次方表示为:1^3 比如153这个数是一个水仙花数,为什么呢? 下面我们用公式来看一下: 153有三个数位 1.5.3 1的三次方为1: 1*1*1=1 列: 1*1=1 1*1=1 5的三次方为125: 5*5*5=125 列: 5*5=25 25*5=1

  • java实现水仙花数的计算

    看到标题java实现水仙花数,首先先要知道什么是水仙花数,具体了解一下 所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 列如153=1*1*1+5*5*5+3*3*3  那么153就是水仙花数,首先是分析需要的功能,首先他是一个3位数. 那值一定在100-1000之间,必定要用到循环.可用for循环,while循环,do while 循环,其次是它需要满足条件 "其各位数字立方和等于该数",那么我们必须把他的各位的数字取出.我们在循环里做判断,当数满足条件

  • Java和C语言分别实现水仙花数及拓展代码

    目录 前言 一.水仙花数 1.代码(Java) 2.运行结果(Java) 3.代码(C语言) 4.运行结果(C语言) 二.拓展 1.代码(Java) 2.运行结果(Java) 3.代码(C语言) 4.运行结果(C语言) 前言 求出0-999之间的所有"水仙花数"并输出.("水仙花数"是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个"水仙花数".) 一.水仙花数 因为水仙花数是三位数,所以我们把范围定为1

  • C语言深入探究水仙花数与变种水仙花数代码

    目录 1.水仙花 1.1先看代码 1.2大体逻辑 2.变种水仙花数 2.1先看代码 2.2代码剖析 1.水仙花 题目: 1.1先看代码 #include <stdio.h> int main() { int i = 0; int count = 0; for (i = 100; i<= 999; i++) { int a = i / 100; int b = (i % 100)/10; int c = (i % 100)%10; if (i == a * a * a + b * b *

  • Java学习-打印1-1000以内的水仙花数代码实例

    水仙花数:水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:370=33+73+00:371=33+73+13,370.371就是一个水仙花数 注意:要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位 public class MyTest { public static void main(String[] args) { /* 打印1-1000的水仙花数 水仙花数:例如 153=1*1*1+5*5*5+3*3*3*/ //定义标记,水仙花数起始值位0 int

  • Java打印出所有的水仙花数的实现代码

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方. 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位. 程序设计: public class exp2{ public static void main(String args[]){ int i=0; math mymath = new

  • Python实例练习水仙花数问题讲解

    目录 1. 问题描述 2. 问题分析 3. 算法思路 4. 代码实现 for循环代码实现 while循环代码实现 1. 问题描述 水仙花数也被称为超完全数字不变数.自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身. 1.水仙花数是一个三位数:111 333 456 999 530 2.水仙花数的个位.十位.百位的数字立方和等于原数 小伙伴们看了问题描述后,一定要自己先练习,再去看博主的代码和解题思路,才能提高自己的编程水平,全靠自觉哟!!

  • Java求10到100000之间的水仙花数算法示例

    本文实例讲述了Java求10到100000之间的水仙花数算法.分享给大家供大家参考,具体如下: 水仙花数: 概念:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 算法思路分析:这个算法我们分两个步骤来进行:第一:我们做一个求一个数的位数的函数:第二:我们通过调用此函数来进行10到100000之间素数的计算! 下面给出具体的代码(仅供参考): package javastudy; public class

  • C语言 简单粗暴的笨方法找水仙花数

    什么是水仙花数: 指一个n位数,其各位数字的n次方之和确好等于该数本身 例如:    1         1^1=1: 153      3^3+5^3+1^3=153; 问题:求0~100000之间的水仙花数,并打印出来 看题目,找突破口: 0~100000  我可以想到用循环来判断0~10000间的数字 由栗子可知:我们需要求数字是几位 要用到次方,则我们需要引用math函数库里的pow函数 求和,依旧要使用循环 那么开始写代码,走一步思考一步: #include <stdio.h> #i

随机推荐