zoukankan      html  css  js  c++  java
  • 快乐数

    package main
    
    import (
    	"fmt"
    	"strconv"
    )
    
    func main() {
    
    	/*
    	编写一个算法来判断一个数是不是“快乐数”。
    	一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,
    	也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
    
    	示例:
    	输入: 19
    	输出: true
    	解释:
    	1**2 + 9**2 = 82
    	8**2 + 2**2 = 68
    	6**2 + 8**2 = 100
    	1**2 + 0**2 + 0**2 = 1
    	*/
    
    	for i := 19; i < 2021; i++ {
    		s := strconv.Itoa(i)
    		res := happy(s)
    		if res == "快乐数" {
    			fmt.Println("是快乐数:", i)
    		} else if res == "OK" {
    			fmt.Println("非快乐数:", i)
    		}
    
    	}
    
    }
    
    func happy(n string) string {
    
    	//str := string(n[0])
    	//fmt.Println(str) //1
    	//fmt.Printf("%T
    ", str) //string
    	//str2 := string(n[1])
    	//fmt.Printf("%T
    ", str2) //string
    	//a, _:= strconv.Atoi(str)
    	//b, _ := strconv.Atoi(str2)
    	//str3 := str + str2
    	//fmt.Println(str3) //19
    	//fmt.Println(a+b) //10
    
    	if len(n) == 2 {
    		//fmt.Println("==")
    		a, _ := strconv.Atoi(string(n[0]))
    		b, _ := strconv.Atoi(string(n[1]))
    		sum := a*a + b*b
    		fmt.Println("len(2)", n, sum)
    		if sum == 1 {
    			//fmt.Println("恭喜找到快乐数")
    			return "快乐数"
    		}
    		sum2 := strconv.Itoa(sum)
    		return happy(sum2);
    	} else if len(n) == 3 {
    		//fmt.Println("====")
    		a, _ := strconv.Atoi(string(n[0]))
    		b, _ := strconv.Atoi(string(n[1]))
    		c, _ := strconv.Atoi(string(n[2]))
    
    		sum := a*a + b*b + c*c
    		fmt.Println("len(3)", n, sum)
    		if sum == 1 {
    			//fmt.Println("恭喜找到快乐数")
    			return "快乐数"
    		}
    		sum2 := strconv.Itoa(sum)
    		return happy(sum2);
    	} else if len(n) == 4 {
    		//fmt.Println("=====")
    		a, _ := strconv.Atoi(string(n[0]))
    		b, _ := strconv.Atoi(string(n[1]))
    		c, _ := strconv.Atoi(string(n[2]))
    		d, _ := strconv.Atoi(string(n[3]))
    
    		sum := a*a + b*b + c*c + d*d
    		fmt.Println("len(4)", n, sum)
    		if sum == 1 {
    			//fmt.Println("恭喜找到快乐数")
    			return "快乐数"
    		}
    		sum2 := strconv.Itoa(sum)
    		return happy(sum2);
    	} /*else if len(n) == 1 {
    		//fmt.Println("=====")
    		a, _ := strconv.Atoi(string(n[0]))
    
    		sum := a*a
    		//fmt.Println("len(1)",sum)
    		if sum == 1 {
    			//fmt.Println("恭喜找到快乐数")
    			return "快乐数"
    		}
    		sum2 := strconv.Itoa(sum)
    		return happy(sum2);
    	}*/
    	/*上面的代码报错
    	运行时:goroutine堆栈超过100000000字节的限制
    	致命错误:堆栈溢出*/
    
    	return "OK" //如果len为1,就直接return结束函数
    }
    
    /*
    是快乐数: 1995
    非快乐数: 1996
    非快乐数: 1997
    非快乐数: 1998
    非快乐数: 1999
    非快乐数: 2000
    非快乐数: 2001
    非快乐数: 2002
    是快乐数: 2003
    非快乐数: 2004
    非快乐数: 2005
    非快乐数: 2006
    非快乐数: 2007
    是快乐数: 2008
    非快乐数: 2009
    非快乐数: 2010
    非快乐数: 2011
    非快乐数: 2012
    非快乐数: 2013
    非快乐数: 2014
    非快乐数: 2015
    非快乐数: 2016
    非快乐数: 2017
    非快乐数: 2018
    是快乐数: 2019
    非快乐数: 2020
    */
    

      

  • 相关阅读:
    流水账
    还是有希望啊
    The Java Tutorials:Collections
    绘图框架新需求
    Fractal Tree扩展
    js获取字符串最后一个字符代码
    js保留小数点后N位的方法介绍
    JS 实现 ResizeBar,可拖动改变两个区域(带iframe)大小
    js获取浏览器高度和宽度值,尽量的考虑了多浏览器。
    jquery自动将form表单封装成json的具体实现
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12370272.html
Copyright © 2011-2022 走看看