/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#define N 10000 //定义N以内的troitsky数,方便以后修改求值范围
int troitsky(long a[N]);
int main()
{
int i; //定义循环变量i、troitsky数的数目和长整形数组存放N以内的troitsky数
long num;
long a[N];
{
int i; //定义循环变量i、troitsky数的数目和长整形数组存放N以内的troitsky数
long num;
long a[N];
//调用函数,输出函数返回值troitsky数的个数、循环输出各个troitsky数
num = troitsky(a);
printf("There are %d troitsky numbers.\n",num);
num = troitsky(a);
printf("There are %d troitsky numbers.\n",num);
for(i = 0;i < num;i++)
{
printf("%6ld",a[i]);
if((i + 1) % 10 == 0)
{
printf("\n");
}
}
printf("\n");
{
printf("%6ld",a[i]);
if((i + 1) % 10 == 0)
{
printf("\n");
}
}
printf("\n");
return 0;
}
}
int troitsky(long *p)
{
int i,j,k; //定义循环变量i,j和计数标志k
{
int i,j,k; //定义循环变量i,j和计数标志k
//定义中间变量temp、改变后的数cag、最高位的数high和troitsky数的个数
int temp,cag,high,loc = 0;
int temp,cag,high,loc = 0;
for(i = 1;i <= N;i++) //循环从1开始到N结束
{
k = 0;
temp = i;
cag = i;
//k用来记录i是几位整形数
while(temp)
{
temp = temp / 10;
k++;
}
//利用除10得到i的最高位
temp = i;
for(j = 0;j < k - 1;j++)
{
temp = temp / 10;
}
{
k = 0;
temp = i;
cag = i;
//k用来记录i是几位整形数
while(temp)
{
temp = temp / 10;
k++;
}
//利用除10得到i的最高位
temp = i;
for(j = 0;j < k - 1;j++)
{
temp = temp / 10;
}
high = temp; //得到最高位之后,用i减去,小于i的并且和i最高位相同的10的最大倍数
for(j = 0;j < k - 1;j++)
{
temp = temp * 10;
}
cag = i - temp; //cag得到减去最高位之后余下的数
cag = cag * 10; //将余下的位乘10,得到和原来i相同位数的数
cag = cag + high; //将最高为加到变化后数cag的最后一位
for(j = 0;j < k - 1;j++)
{
temp = temp * 10;
}
cag = i - temp; //cag得到减去最高位之后余下的数
cag = cag * 10; //将余下的位乘10,得到和原来i相同位数的数
cag = cag + high; //将最高为加到变化后数cag的最后一位
if(!(cag % i) && (cag >= i)) //判断改变后的数是否是原数的整数倍
{
*(p+loc) = i;
loc++;
}
{
*(p+loc) = i;
loc++;
}
}
return loc; //返回N以内troitsky数的个数
}
}