有一类数叫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……
输入时先输入2个整数,暗示发生器的数值规模,规模在10000以内,以及要输出的Self-Number个数。
然后,输入要输出的每个Self-Number数的序号值。
起首,界说一个常量,用来节制发生器的数值规模。
界说各整型变量,节制法式的运行。
接着,界说两个整型数组,保留各发生器所得的值,以及所得的Self-Number数。
给数组sum初始化,初始值为0。
接着,输入发生器n的规模,以及所输出的Self-Number的个数。
界说整型数组u,存入要输出的Self-Number数的序号。
用for轮回,计较各发生器n所得的f(n)值,保留在数组sum中。
用while轮回,节制获得发生器n的每一位数值,并实现累加。
用两重for轮回,实现判定n以内的每个数是否为Self-Number,若是不是Self-Number数,则f的值为1。
若是一个数是Self-Number数,则将它保留到数组s中。
然后,输出整数规模内Self-Number数的个数。
最后,输出要求输出的各Self-Number数。
运行法式,输入整数规模和要输出的Self-Number个数,以及各Self-Number数序号,电脑就会输出响应的Self-Number数。
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!