您的位置:首页 > 编程语言

【C编程】找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍

2017-05-01 12:53 393 查看
/*找出符合以下条件的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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐