只列出求最小循环节部分
for(int i=1;i<=n;i++)
{
int temp=i-next[i];
if(i%temp==0 && i/temp>1)
printf("%d %d\n",i,i/temp);
}
其中i是求前i个字符,i/temp是求重复的部分循环了几次
最小循环节:abcabcabc最小循环节前六位是abc重复两次前九位也是abc重复3次。abccabc这里面就没有最小循环节因为中间有c把两个循环节阻断