随意写一个十进制的自然数(如2583),然后求这个数目字的平方和(2^2+5^2+8^2+3^2=102),对得出来的数(102)再用此法处理(1^2+0^2+2^2=5),并一直照此进行下去(5^2
2016-11-23 15:15
501 查看
分析:假如输入56,则应该把56拆分为5和6,取余可以将其拆分,我们从后往前来计算会比较方便,56%10 * 56%10 就是6*6,保存这个6*6结果,在将56/10变成5,让5%10*5%10就是5*5,令6*6+5*5保存这个结果,只要这个结果不为145且不为1则继续循环下去
再次说明:将56拆分为5和6,5的平方+6的平方得到新数,只要这个新数不为145就继续拆分平方
代码:
#include <stdio.h>
main()
{
int i,j,t,n;
scanf("%d",&n);
while ((n!=1)&&(n!=145)&&n)
{
t=(n%10)*(n%10); //最后一个数平方
printf("%d*%d",n%10,n%10);
do
{
n/=10;
printf("+%d*%d",n%10,n%10);
t=t+(n%10)*(n%10);
} while (n/10!=0);
printf("=%d\n",t);
n=t;
}
}
/*
输入56,将56拆分为5和6,5的平方+6的平方的到新数,只要这个新数不为145就继续拆分平方
试数:n=56 t=6*6=36 输出6*6 n = 5 输出+5*5 t=t+5*5 = 36+25=61 5/10==0 跳出循环 输出=61 n=61
n=61 t= 1*1 输出1*1 n=6 输出+6*6 t=1+6*6=37 6/10==0 跳出循环 输出=37 n=37
n=37 t=7*7=49 输出7*7 n=3 输出+3*3 t= 49+3*3==58 3/10==0 跳出循环 输出=58 n=58
n=58 t=8*8=64 输出8*8 n=5 输出+5*5 t=64+5*5=89 5/10==0 跳出循环 输出=89 n=89
n=89 t=9*9=81 输出9*9 n=8 输出8*8 t=81+8*8=145 8/10==0 跳出循环 输出=145 n=145
n=145 不满足条件,程序结束
*/
再次说明:将56拆分为5和6,5的平方+6的平方得到新数,只要这个新数不为145就继续拆分平方
代码:
#include <stdio.h>
main()
{
int i,j,t,n;
scanf("%d",&n);
while ((n!=1)&&(n!=145)&&n)
{
t=(n%10)*(n%10); //最后一个数平方
printf("%d*%d",n%10,n%10);
do
{
n/=10;
printf("+%d*%d",n%10,n%10);
t=t+(n%10)*(n%10);
} while (n/10!=0);
printf("=%d\n",t);
n=t;
}
}
/*
输入56,将56拆分为5和6,5的平方+6的平方的到新数,只要这个新数不为145就继续拆分平方
试数:n=56 t=6*6=36 输出6*6 n = 5 输出+5*5 t=t+5*5 = 36+25=61 5/10==0 跳出循环 输出=61 n=61
n=61 t= 1*1 输出1*1 n=6 输出+6*6 t=1+6*6=37 6/10==0 跳出循环 输出=37 n=37
n=37 t=7*7=49 输出7*7 n=3 输出+3*3 t= 49+3*3==58 3/10==0 跳出循环 输出=58 n=58
n=58 t=8*8=64 输出8*8 n=5 输出+5*5 t=64+5*5=89 5/10==0 跳出循环 输出=89 n=89
n=89 t=9*9=81 输出9*9 n=8 输出8*8 t=81+8*8=145 8/10==0 跳出循环 输出=145 n=145
n=145 不满足条件,程序结束
*/
相关文章推荐
- 【C语言】要求找出具有下列性质的数的个数(包含输入的自然数n): 先输入一个自然数n(n<=500),然后对此自然数按照如下方法进行处理:
- 黑马程序员之C#编程基础学习笔记:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素减1。
- 求解1^2+2^2+3^2+4^2+...+n^2的方法(求解1平方加2平方加3平方...加n平方的和)
- 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 解答: 分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解
- PyCharm中按住Alt键,可以选择一个指定列表,然后对这个数列进行操作,比如删除,增加等等
- 纯数学教程 Page 325 例LXVIII (14) $\frac{1}{1^2}+\frac{1}{3^2}+\frac{1}{5^2}+\cdots=\frac{3}{4}(\frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\cdots)$
- 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。 程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。 请使用3个数组处理函数来分别进行输入、显示和计算
- 多个进程同时等待网络的连接事件,当这个事件发生时,这些进程被同时唤醒,我们知道进程被唤醒,需要进行内核重新调度,这样每个进程同时去响应这一个事件,而最终只有一个进程能处理事件成功,其他的进程在处理该事件失败后重新休眠或其他。
- 最近在做ShareSDK的微信分享的时候遇到了点问题,就是分享的时候选择微信好友或者微信朋友圈会打开一下微信然后界面都还没加载出来就闪退。这个问题我在网上找了好多种的可能的情况以及处理办法,最终找到了
- Chain Of Responsibility 避免把一个请求的发送者和请求者的接收者进行耦合,这个模式要求多个对象都有机会处理这个请求
- 整数数组的定义,然后输入一个整数X,假定X不在这个数组,返回小于X位置的最大数目i而超过X位置的最小数目j
- ipc连接时出来这个提示: 不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的连接,然后在试一次...
- 因为不想再程序中写循环,因此把UI页面需要更新的纪录的主键组成了一个以","隔开的字符串,将这个字符串传入存储过程中进行处理(转)
- 做一个WF窗体的启动项,就是让这个程序启动的时候首先会有一个图片出来,然后开始程序
- 写了一个程序用来处理字符串,把一张列表中的题目序号提取出来,然后跟自己昨晚的列表比较,找出来还没有做过的题目列表
- ipc连接时出来这个提示: 不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的连接,然后在试一次...
- 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。
- 念整数,你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来
- 关于后台返回数据为一个整体,我们需要拿某一个字段出来单独以这个字段进行分类的需求
- poj 1651 DP 从一个序列中任意选一个数,进行某种计算,然后移除这个数,直到最后