loop: stop if value repeats

4 Ansichten (letzte 30 Tage)
Niklas Kurz
Niklas Kurz am 21 Jan. 2021
Beantwortet: Jan am 24 Jan. 2021
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 Kommentare
Niklas Kurz
Niklas Kurz am 24 Jan. 2021
noone comes up with a solution?
Jan
Jan am 24 Jan. 2021
The question is not clear yet. This makes it hard to find an answer.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 24 Jan. 2021
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)

Weitere Antworten (1)

Bob Thompson
Bob Thompson am 21 Jan. 2021
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
  3 Kommentare
Bob Thompson
Bob Thompson am 22 Jan. 2021
Mmm, I see where you're getting the multiple values for R from now.
I'm not sure why you want to stop the 'loop' if you don't actually have one. Do you just want the first index of R which contains a duplicate?
Niklas Kurz
Niklas Kurz am 23 Jan. 2021
I want the loop to stop if it found a repeated number because I need it to count the period in order that I can continue processing wih it.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by