noone comes up with a solution?
loop: stop if value repeats
조회 수: 7(최근 30일)
표시 이전 댓글
In my case this is based on
N = Number
G = Guess
x = 1:N
R= mod(G^x,N)
if R repeats I want the calculation mod(G^x,N) to stop and tell me the steps P that it needed to to get to R again
for example if R = 1, 4 3, 2, 1 -stop, P = 4
댓글 수: 2
채택된 답변
Jan
2021년 1월 24일
N = Number;
G = Guess;
x = 1:N;
R = nan(1, N);
found = N;
for k = 1:N
R(k) = mod(G^x(k), N);
if any(R(1:k-1) == R(k))
found = k;
break
end
end
R = R(1:found)
댓글 수: 0
추가 답변(1개)
Bob Thompson
2021년 1월 21일
I'm assuming you have all four of these commands within some kind of loop. Without the loop I have not tested what I'm going to suggest adding.
To do what you're asking you need to record all the values of R, this can be done by indexing R. If you aren't running an integer for loop, starting at 1, then you'll need to add a counter for each time you loop.
Then you just need an if check to determine if the loop needs to be broken.
N = Number
G = Guess
x = 1:N
R(count) = mod(G^x,N)
if sum(R==R(count))>1
P = length(R)-1;
break
end
end
참고 항목
범주
Find more on Loops and Conditional Statements in Help Center and File Exchange
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!