注册 登录
编程论坛 Matlab

1/n 循环节求法 请求帮助

wcvolcano 发布于 2012-03-23 18:43, 614 次点击
function [m,t]=xh(n)
%循环节的长度不会超过分母的值
l=floor(log10(n))+1;
m(1)=floor(10^l/n);
s(1)=mod(10^l,n);
for k=2:n;
    m(k)=floor(s(k-1)*10/n);
    s(k)=mod(s(k-1)*10,n);
       if  s(k)==1
           t=k+l-1;
           break
       elseif any(s(1:k-1)==s(k))|s(k)==0
              b=find(s(1:k-1)==s(k));
                 t=k-b;
           break
        end   
end

if t<19
   m=num2str(1/n,20);
   m=[m(1:k+l+1-t),'(',m(k+l+2-t:k+l+1),')'];

else
   m=['循环节过长,不能输出'];
end
if length(t)==0
    t=1;
end
if n==3
   m='0.(3)';
   t=1;
end



%%这是个有问题的程序,希望得到=改正
0 回复
1