/*找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍
例如:将142857的首位数字1移动到末位之后得到的数是428571,而428571=3*142857,因此142857是Troitsky数
编程要求:
(1) 编写函数int Troitsky(long a[]),其功能是求出10000以内的所有Troitsky数,并将它们依次放入a指向的数组中,函数返回找到的Troitsky数的个数.
(2)编写main函数,调用Troitsky函数,将运行结果输出到屏幕。
*/
#include <stdio.h>
int juge_Troitsky(long m)
{
int temp = m; //取出m最高位的数
int count = 1; //数出m的最高位
long m_change = 0; //存放m变换后的数值
int flag = 0;
while(temp > 10)
{
temp = temp/10;
count = count*10;
}
m_change = (m%count)*10+temp;
if(m_change%m == 0)
{
flag = 1;
}
else
{
flag = 0;
}
return flag;
}
int Troitsky(long a[]) //将满足条件的数存放在i中
{
long i = 0;
int j = 0;
for(i = 1;i <= 10000;i++)
{
if(juge_Troitsky(i) == 1)
{
a[j] = i;
j++;
}
}
printf("the result is:\n");
for(i = 0;i < j;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return i;
}
int main()
{
long a[100000] = {0};
int count = 0;
count = Troitsky(a);
printf("sum is:%d\n",count);
return 0;
}
【C编程】找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍
最新推荐文章于 2022-10-22 20:45:30 发布