Self-Numbers问题怎样用C++解决

有一类数叫Self-Numbers , 任取一个正整数n , 界说f(n)为加上它每一位数字的和 , 例如:f(75)=75+7+5=87 , 以肆意一个整数n为起点可以按照此方式机关出无限递增的序列:n , f(n) , f(f(n)) , f(f(f(n)))…… 。 若是从33起头 , 下一个数就是33+3+3=39 , 接着是39+3+9=51 , 然后是51+5+1=57 , 可以发生如许一个序列:33 , 39 , 51 , 57 , 69 , 84 , 96 , 111 , 114 , 120 , 123 , 129 , 141…… , 我们将数字n称为f(n)的发生器 。 在上例中 , 33是39的发生器 , 39是51的发生器 , 51是57的发生器 。 一个没有发生器的数称作Self-Number , 例如100以内前13个Self-Number是1 , 3 , 5 , 7 , 9 , 20 , 31 , 42 , 53 , 64 , 75 , 86 , 97 。 将第i个Self-Number暗示为s[i] , 就形当作一个序列s[1]=1 , s[2]=3 , s[3]=5……

Self-Numbers问题怎样用C++解决

文章插图

需要这些哦
C++
方式/
1输入时先输入2个整数 , 暗示发生器的数值规模 , 规模在10000以内 , 以及要输出的Self-Number个数 。
然后 , 输入要输出的每个Self-Number数的序号值 。

Self-Numbers问题怎样用C++解决

文章插图

2【Self-Numbers问题怎样用C++解决】起首 , 界说一个常量 , 用来节制发生器的数值规模 。

Self-Numbers问题怎样用C++解决

文章插图

3界说各整型变量 , 节制法式的运行 。

Self-Numbers问题怎样用C++解决

文章插图

4接着 , 界说两个整型数组 , 保留各发生器所得的值 , 以及所得的Self-Number数 。

Self-Numbers问题怎样用C++解决

文章插图

5给数组sum初始化 , 初始值为0 。

Self-Numbers问题怎样用C++解决

文章插图

6接着 , 输入发生器n的规模 , 以及所输出的Self-Number的个数 。

Self-Numbers问题怎样用C++解决

文章插图

7界说整型数组u , 存入要输出的Self-Number数的序号 。

Self-Numbers问题怎样用C++解决

文章插图

8用for轮回 , 计较各发生器n所得的f(n)值 , 保留在数组sum中 。

Self-Numbers问题怎样用C++解决

文章插图

9用while轮回 , 节制获得发生器n的每一位数值 , 并实现累加 。

Self-Numbers问题怎样用C++解决

文章插图

10用两重for轮回 , 实现判定n以内的每个数是否为Self-Number , 若是不是Self-Number数 , 则f的值为1 。

Self-Numbers问题怎样用C++解决

推荐阅读