In our question said that "both play optimally". and in the question said that "a player can subtract from N any proper divisor (not equal to N)". I use this method: n=49 d(49)={1,7,49} 1)Alice: n=49-1=48
d(48)={1,2,3,4,6,8,16,24,48} 2)Bob:n=48-24=24
d(24)={1,2,3,4,6,12,24} 3)Alice: n=24-12=12
d(12)={1,2,3,4,6,12} 4)Bob: n=12-6=6
d(6)={1,2,3,6} 5)Alice: n=6-3=3
d(3)={1,3} 6)Bob: n=3-1=2
d(2)={1,2} 7)Alice: n=2-1=1 and Alice win.
but there is another way:
n=49 d(49)={1,7,49} 1)Alice: n=49-7=42
d(42)={1,2,3,6,7,14,21,42} 2)Bob:n=42-21=21
d(21)={1,3,7,21} 3)Alice: n=21-7=14
d(14)={1,2,7,14} 4)Bob: n=14-7=7
d(7)={1,7} 5)Alice: n=7-1=6
d(6)={1,2,3,6} 6)Bob: n=6-3=3
d(3)={1,3} 7)Alice: n=3-1=2
d(2)={1,2} 8)Bob: n=2-1=1 and Bob win.
which is optimally?first or second ? and can you says that which test my program give wrong answer?