简单算法练习

简单算法练习

一、水仙花数(narcissistic number)

1.问题描述:什么是水仙花数

水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于他本身(1^3 + 5^3 + 3^3 = 153)。

注意:水仙花数只是`自幂的一种

  1. 一位自幂数:独身数
    2.两位自幂数:没有
    3.三位自幂数:水仙花数
    4.四位自幂数:四叶玫瑰数(四叶玫瑰数是指四位数各位上的数字的四次方之和等于本身的数。)
    5.五位自幂数:五角星数
    6.六位自幂数:六合数
    7.七位自幂数:北斗七星数
    8.八位自幂数:八仙数
    9.九位自幂数:九九重阳数
    10.十位自幂数:十全十美数
2.问题分析

根据水仙花数的定义,判断一个数是否为“水仙花数”,最重要的是要把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设为s),若s与给出的三位数相等, 三位数为“水仙花数”,反之,则不是。

3.算法设计

水仙花数”是指满足某一条件的三位数,根据这一信息可以确定整数的取值范围是 100〜999。对应的循环条件如下:

for(n=100;n<1000;n++)
{
   
	//......
}

上述代码说明

  • 将n除以100,得出在百位上的数字hundred;
  • 将(n-i*100)整除以10(或将n先整除以10再对10求模n/10%10),得出n在十位数上的数字ten;
  • 将n对10取余,得出n在个位上的数字unit
    求得这三个数字的立方和是否与其本身相等,若相等,则该数为水仙花数
C语言实现
#include <stdio.h>
int main()
{
   
	int hun, ten, unit,n;
	printf("result is:")
	for(n=100;n<1000;n++)	/*整数的取值范围*/
	{
   
		hun = n/100;
		ten = n/10%10;
		unit = n%10;
		if(n == hun^3 + ten^3 + unit^3) /*各位上的立方和是否与原数n相等*/
		{
   
			printf("%d ",n);
		}
	}
	printf("\n");
	return 0;
}
Java实现
/**
 * @Description 水仙花数
 * @Param XXX
 * @Author gfl
 * @Date 2021/3/9
 * @Since 版本 1.1.1
 */
public class NarcissisticNumber {
   
    public static void main(String[] args){
   
        for (int i=100;i<1000;i++)
        {
   
            int a = i/100;     //取得百位数
            int b = i/10%10;   //取得个位数
            int c = i%10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值