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

 更新时间:2021年11月19日 12:00:21   作者:愿百事可乐  
这篇文章主要介绍了分别用Java和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语言分别实现水仙花数及拓展代码的文章就介绍到这了,更多相关水仙花数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Java阻塞队列(BlockingQueue)的实现原理

    详解Java阻塞队列(BlockingQueue)的实现原理

    这篇文章主要介绍了详解Java阻塞队列(BlockingQueue)的实现原理,阻塞队列是Java util.concurrent包下重要的数据结构,有兴趣的可以了解一下
    2017-06-06
  • JavaWeb通过IDEA配置Servlet操作流程详解

    JavaWeb通过IDEA配置Servlet操作流程详解

    这篇文章主要介绍了JavaWeb通过IDEA配置Servlet实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • Java实现顺序表的操作

    Java实现顺序表的操作

    这篇文章主要为大家详细介绍了Java实现顺序表的基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 让Java程序自动重启的实现方法(推荐)

    让Java程序自动重启的实现方法(推荐)

    下面小编就为大家带来一篇让Java程序自动重启的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • mybatis-plus中的常用注解

    mybatis-plus中的常用注解

    这篇文章主要介绍了mybatis-plus中的常用注解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java 运算符 动力节点Java学院整理

    Java 运算符 动力节点Java学院整理

    这篇文章主要介绍了Java 运算符 动力节点Java学院整理,需要的朋友可以参考下
    2017-04-04
  • Java编程中的一些常见问题汇总

    Java编程中的一些常见问题汇总

    这篇文章主要介绍了Java编程中的一些常见问题汇总,本文总结的都是一些Java代码中比较典型的错误,需要的朋友可以参考下
    2014-09-09
  • Java并发编程如何降低锁粒度并实现性能优化

    Java并发编程如何降低锁粒度并实现性能优化

    这篇文章主要介绍了Java并发编程如何降低锁粒度并实现性能优化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • SpringBoot实现接口的各种参数校验的示例

    SpringBoot实现接口的各种参数校验的示例

    本文主要介绍了SpringBoot实现接口的各种参数校验的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • SpringBoot实现Thymeleaf验证码生成

    SpringBoot实现Thymeleaf验证码生成

    本文使用SpringBoot实现Thymeleaf验证码生成,使用后台返回验证码图片,验证码存到session中后端实现校验,前端只展示验证码图片。感兴趣的可以了解下
    2021-05-05

最新评论