用C语言编写快乐数
答案:2 悬赏:50 手机版
解决时间 2021-11-27 06:09
- 提问者网友:雾里闻花香
- 2021-11-27 01:18
用C语言编写快乐数
最佳答案
- 五星知识达人网友:风格不统一
- 2021-11-27 01:51
#include
#define RADIX 10 //默认10进制
int main()
{
int num = 0;
int temp = 0;
int i = 0;
int preBit = 0;
int sum = 0;
int count = 0;
printf("请输入一个整数N: ");
scanf("%d", &num);
for(i=1; i<=num; i++)
{
temp = i;
while(1)
{
sum = 0;
while(temp)
{
preBit = temp % RADIX;
temp /= RADIX;
sum += preBit * preBit;
}
if(sum == 1)
{
printf("%d ", i);
break;
}
if(sum == 4)
{
count++;
if(count>=3)
{
break;
count = 0;
}
}
temp = sum;
}
}
printf("\n");
return 0;
}
#define RADIX 10 //默认10进制
int main()
{
int num = 0;
int temp = 0;
int i = 0;
int preBit = 0;
int sum = 0;
int count = 0;
printf("请输入一个整数N: ");
scanf("%d", &num);
for(i=1; i<=num; i++)
{
temp = i;
while(1)
{
sum = 0;
while(temp)
{
preBit = temp % RADIX;
temp /= RADIX;
sum += preBit * preBit;
}
if(sum == 1)
{
printf("%d ", i);
break;
}
if(sum == 4)
{
count++;
if(count>=3)
{
break;
count = 0;
}
}
temp = sum;
}
}
printf("\n");
return 0;
}
全部回答
- 1楼网友:春色三分
- 2021-11-27 02:03
//快乐数
#include
#include
int square(int num)
{
int i=0,j=0,k=0,l=0,m=0,n=0;
int ret=0;
i=num/100000;
j=num/10000-i*10;
k=num/1000-i*100-j*10;
l=num/100-i*1000-j*100-k*10;
m=num/10-i*10000-j*1000-k*100-l*10;
n=num-i*100000-j*10000-k*1000-l*100-m*10;
ret = i*i+j*j+k*k+l*l+m*m+n*n;
return ret;
}
int main()
{
int s,i;
int ret=0;
printf("please input number:");//限定最多为6位数
scanf("%d", &s);
for(i=1; i<=s; i++)
{
ret = square(i);
while(ret != 4 && ret != 16 && ret != 37 && ret != 58 && ret != 89 && ret != 145 && ret != 42 && ret != 20)
{
ret = square(ret);
if(ret == 1){
printf("%d\t", i);
break;
}
}
}
return 0;
}
#include
#include
int square(int num)
{
int i=0,j=0,k=0,l=0,m=0,n=0;
int ret=0;
i=num/100000;
j=num/10000-i*10;
k=num/1000-i*100-j*10;
l=num/100-i*1000-j*100-k*10;
m=num/10-i*10000-j*1000-k*100-l*10;
n=num-i*100000-j*10000-k*1000-l*100-m*10;
ret = i*i+j*j+k*k+l*l+m*m+n*n;
return ret;
}
int main()
{
int s,i;
int ret=0;
printf("please input number:");//限定最多为6位数
scanf("%d", &s);
for(i=1; i<=s; i++)
{
ret = square(i);
while(ret != 4 && ret != 16 && ret != 37 && ret != 58 && ret != 89 && ret != 145 && ret != 42 && ret != 20)
{
ret = square(ret);
if(ret == 1){
printf("%d\t", i);
break;
}
}
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯