 |
 |
re: brain teaser #64 |
 |
Nov14-03, 01:18 AM
|
#1
|
gnome is
Offline:
Posts: 1,049
|
re: brain teaser #64
Originally posted by Hurkyl
(Assuming he finishes one skyscraper before moving onto the next, doesn't wash the same window twice, etc)
The first time it happens is at the end of his 56-th day of washing windows, at which time he has washed 19 skyscrapers fully.
|
Hurkyl,
I've been wondering, is there an analytic solution to this, or did you just write a loop with something like
if((i*37)%109==1) printf("%d",i);
?
|
|
|
|
Nov14-03, 07:03 AM
|
#2
|
Hurkyl is
Offline:
Posts: 13,363
|
I solved the equation
37x = 1 mod 109
By computing the inverse of 37.
There's a really easy way to do this using the extended euclidean algorithm, so it could be done by hand, but I used a function I wrote for my TI-89 a while back for raising numbers to high powers given a modulus, using the fact that:
x^108 = 1 (mod 109) (for x relatively prime to 109)
so
37^(-1) = 37^107 (mod 109)
|
|
|
|
Nov14-03, 01:03 PM
|
#3
|
gnome is
Offline:
Posts: 1,049
|
Sorry, I can't figure out what you did.
x^108 = 1 (mod 109) (for x relatively prime to 109)
|
How do you determine that? It seems to be true in some cases, i.e
2^2 = 1 mod 3
2^4 = 1 mod 5
2^6 = 1 mod 7
but 2^8 = 4 mod 9
37^(-1) = 37^107 (mod 109)
|
That, I don't understand at all.
Please explain.
|
|
|
|
Nov14-03, 05:55 PM
|
#4
|
Hurkyl is
Offline:
Posts: 13,363
|
Sorry, I was in a hurry this morning.
The general result is the following: if gcd(a, n) = 1, then:
a^φ(n) = 1 (mod n)
Where φ(n) is the Euler-phi function; the number of integers in the range [1, n] that are relatively prime to n.
The special case for n prime is Fermat's Little Theorem. If n is prime, then φ(n) = n - 1, and we have that x^(n-1) = 1 (mod n) for any x relatively prime to n.
So we know that 37^108 = 1 (mod 109), since 109 is prime. Using this fact, can you tell me a number, y, with the property that 37y = 1 (mod 109)?
|
|
|
|
Nov14-03, 07:43 PM
|
#5
|
gnome is
Offline:
Posts: 1,049
|
[g)]
I should probably heed the words of the wise man who said, "When you find that you have dug yourself into a hole, stop digging."
I've spent an hour or so reading about the phi function, & maybe I have a crude understanding of it.
But to answer your question:
y = 37^107 has that property but I don't see where that leads.
...I just rolled back to your previous post, & look at that -- there I see 37^107 ... but I'm still not getting it, & I have to "knock off" for now. I'll give it some more thought tomorrow. Any more clues?
Thanks.
|
|
|
|
Nov14-03, 09:37 PM
|
#6
|
Hurkyl is
Offline:
Posts: 13,363
|
Well, we want to solve the equation
37 x = 1 (mod 109)
And now we know the solution is x = 37^107.
|
|
|
|
Nov15-03, 12:18 AM
|
#7
|
gnome is
Offline:
Posts: 1,049
|
Duh!
Thanks Hurkyl.
I kinda got lost in the woods, trying to understand Eric Weisstein's explanation of the Euler totient function, as he calls it, & lost sight of what we were trying to solve.
So, if I understand correctly now, that's a really neat solution that'll work for any prime number of skyscrapers assuming your machine can handle really big integers. Ubasic comes in very handy for this. [:)]
But what if the number of skyscrapers was non-prime, or the puzzle called for some remainder other than 1? Would there be any way to adapt this approach?
|
|
|
|
Nov15-03, 12:42 AM
|
#8
|
NateTG is
Offline:
Posts: 2,519
Recognitions:
Homework Helper
Science Advisor
|
Well, there's a pretty easy approach that doesn't require fermat's little theorem:
37*3=111 ≡ 2 mod 109
2*55=110 ≡ 1 mod 109
so
3*55=165 ≡ 56 mod 109 is 37 inverse.
There's a bit of fiddling, but this type of technique will get you n inverse in log2n steps regardless of the modulus.
|
|
|
|
Nov15-03, 03:14 AM
|
#9
|
gnome is
Offline:
Posts: 1,049
|
I'm glad you posted that, Nate, because now I realize that I still don't really understand Hurkyl's approach (or your's).
I don't see why he was looking for 37^107, or how that got him to 56, or how you are getting to 56.
I finally figured out that what you and he are referring to when you say that 56 is 37 inverse (I hope) is that 56 is the number which, when multiplied by 37 and then divided by 109 leaves a remainder of 1. But I don't see how you are getting to that.
About all I've gotten out of this so far is a vague understanding of the Euler phi-function.
Sorry to be so dense.
|
|
|
|
Nov15-03, 11:58 AM
|
#10
|
Hurkyl is
Offline:
Posts: 13,363
|
The phi function is definitely worth learning! However, my approach to solving this equation is definitely not the most practical; the only reason I used it was because it was the first method that popped into my head and I had the tools available to compute it.
I imagine that Nate's approach is closely related to the approach using the extended euclidean algorithm. When you use the extended euclidean algorithm to compute gcd(m, n), it gives you integers u and v such that:
um + vn = gcd(m, n)
If we are given that x is relatively prime to n, we know that gcd(x, n) = 1. If we apply the extended euclidean algorithm, we get integers u and v such that:
ux + vn = 1
Now, if we reduce this equation mod n, we get
ux = 1 (mod n)
So this is how we can compute inverses with the extended euclidean algorithm.
The trick to the extended euclidean algorithm is to remember the steps you performed while computing the gcd. Allow me to demonstrate:
We start wtih gcd(37, 109)
The first step of the euclidean algorithm for computing this gcd is to subtract from 109 a multiple of 37, preferably the largest multiple of 37 that is less than 109, which is 74. So, we have:
gcd(37, 109) = gcd(37, 109 - 74) = gcd(37, 35)
But we need to keep track of the operations we performed, so we also note that:
35 = 109 - 2 * 37
Then we subtract 35 from the left side to get:
gcd(37, 35) = gcd(2, 35)
And we note that
2 = 37 - 35 = 37 - (109 - 2 * 37) = 37 - 109 + 2 * 37 = 3 * 37 - 109
Finally, we subract 34 fom 35 to get:
gcd(2, 35) = gcd(2, 1) = 1
And we note that
1 = 35 - 2 * 17 = (109 - 2 * 37) - 17 * (3 * 37 - 109) = 18 * 109 - 53 * 37
So now we know that:
1 = (-53) * 37 = 56 * 37 (mod 109)
There are much better ways of doing this bookkeeping, but I just wanted to demonstrate the idea.
|
|
|
|
Nov15-03, 01:57 PM
|
#11
|
gnome is
Offline:
Posts: 1,049
|
S**t! This is like Pandora's box. Each step of the way something else pops up that I have to learn to understand the previous step. Recursive learning? It's wonderful of you guys to try to give me this intro, but I don't think I have time to teach myself number theory & keep up with the courses I'm actually taking now.
Thanks, anyway. I'll return to this topic as time permits.
By the way, in what course & at what level are such topics normally covered? It seems we barely scratched at the surface in the Discrete Structures course I took last year.
|
|
|
|
Similar Threads for: re: brain teaser #64
|
| Thread |
Thread Starter |
Forum |
Replies |
Last Post |
|
Brain Teaser #56
|
Greg Bernhardt |
Brain Teasers |
2 |
Oct16-03 04:47 PM |
|
Brain Teaser #45
|
Greg Bernhardt |
Brain Teasers |
3 |
Oct13-03 02:28 PM |
|
Brain Teaser #54
|
Greg Bernhardt |
Brain Teasers |
3 |
Oct12-03 10:31 PM |
|
Brain Teaser #52
|
Greg Bernhardt |
Brain Teasers |
2 |
Oct9-03 12:16 PM |
|
Brain Teaser #36
|
Greg Bernhardt |
Brain Teasers |
5 |
Aug29-03 07:09 PM |
|
 |
 |
|
 |
|