I have a function where I evaluate two arrays. For some reason, I got wrong not equal. Even when I evaluate element by element.
What is wrong?
Here is my code:

Number = 3
n = 15
U = [1,3,5,7]
ab = Vector{Int64}()
for i=0:20
temp = mod(Number^i,n)
positionArray = findfirst(isequal(temp),ab)
if positionArray .== nothing
push!(ab,temp)
end
x = sort(ab)
if x == U
println(true)
break
end
for j=1:size(x,1)
println(U[j])
if x[j]==U[j]
println(true)
else
println(false)
end
end
end

How can you tell if you are getting a wrong equal? Your function doesnâ€™t return any information about whether x and U are equal. It just returns sort(aa), and aa isnâ€™t defined anywhere. Is that a typo?

There is a couple of things that are strange here.

Donâ€™t name a variable Number. Thatâ€™s a basic type. It shouldnâ€™t cause any problems, but it will be confusing to read.

positionArray will be a scalar, so donâ€™t use .== to compare it (Again, this is just for clarity for anyone reading your code). isnothing(positionArray) is a good way to check for nothingness.

There will be an overflow error every time you input a vector that isnâ€™t equal. But you know how long the vector should be.

Instead of adding the j loop (which I assume is an afterthought when you didnâ€™t get the result you expected), you could have added a couple of println(x);println(U)s.

If this snippet does what I think it does, you could replace it by

number = 3
n = 15
U = [1,3,5,7]
U == sort(mod.(number.^(0:(length(U)-1)), n))