比特大陆机试“判断是否是理想数”代码分享【面试经验】

题目描述: 

编写一个算法来确定一个数字是否是“理想数”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是“理想数”。

例如:19是一个“理想数”,计算过程如下:

  • 1^2+9^2=82
  • 8^2+2^2=68
  • 6^2+8^2=100
  • 1^2+0^2+0^2=1

要求:

当输入理想的数字时,输出True,否则输出False。

思路:

方法一(c语言实现):

1. 不理想的数字最终会在 [4,16,37,58,89,145,42,20] 这些数字中无限循环,因此可以加入判断,当数字变为这些数字里的任意一个(比如4)时就结束循环,输出False,从而避免无限循环的产生。

2. 理想数都会收敛于1。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int car = 1;
    int num = 0;
    int tmp = 0;
    while (car == 1)
    {
        printf("请输入一个数字:\n"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值