循环长度

来源:百度知道 编辑:UC知道 时间:2024/06/18 11:03:45
众所周知,2的正整数次幂最后一位数总是不断的在重复2,4,8,6,2,4,8,6……我们说2的正整数次幂最后一位的循环长度是4(实际上4的倍数都可以说是循环长度,但我们只考虑最小的循环长度)。类似的,其余的数字的正整数次幂最后一位数也有类似的循环现象:

循环
循环长度

2
2、4、8、6
4

3
3、9、7、1
4

4
4、6
2

5
5
1

6
6
1

7
7、9、3、1
4

8
8、4、2、6
4

9
9、1
2
#include"stdio.h"
#define EOF -1
void main()
{int i,j,c,shu,a[100],k;
while(scanf("%d",&shu)!=EOF)
{for(i=1,j=0;;i++,j++)
{if(i==1) c=shu;else c=c*shu;
a[j]=c%10;
for(k=0;k<j;k++)
if(a[j]==a[k]) break;
if(a[j]==a[k]) break;

}printf("%d\n",k);
}
}
为什么不对,请指正

#include"stdio.h"
#define EOF -1
void main()
{int i,j,c,shu,a[100],k;
while(scanf("%d",&shu)!=EOF)
{for(i=1,j=0;;i++,j++)
{if(i==1) c=shu;else c=c*shu;
a[j]=c%10;
for(k=1;k<j;k++)
if(a[0]==a[k]) break;
if(a[0]==a[k]) break;

}printf("%d\n",k);
}
}

改好了
#include"stdio.h"
#include<stdlib.h>
void main()
{
int j,c=1,shu,a[100],k;
while(scanf("%d",&shu)!=0)
{
for(j=0;;j++)
{
c=c*shu;
a[j]=c%10;
for(k=0;k<j;k++)
if(a[j]==a[k])
{
printf("%d\n",j);
exit(0);
}
}
}
}