生徒から出された整数問題(Juliaで解いてみた)


整数問題

x,\,y,\,z\in \mathbb{Z}とする。

x^4+y^4+z^4+2=(x+y+z+2)^4

を満たす組(x,\,y,\,z)があれば1組求めよ。無ければ存在しないことを証明しせよ。

まずは探してみる。

juliaを使って探してみました。macのJupyter Notebookです。
とりあえず,1000くらいまでで様子を見てみる。

@time for x=0:1000,y=0:1000,z=-2000:0
    if x^4+y^4+z^4+2==(x+y+z+2)^4
        println(x,y,z)
    end
end

28.468024 seconds

@time for x=0:1000,y=-1000:0,z=-1000:0
    if x^4+y^4+z^4+2==(x+y+z+2)^4
        println(x,y,z)
    end
end

14.231885 seconds

@time for x=0:1000,y=0:1000,z=0:1000
    if x^4+y^4+z^4+2==(x+y+z+2)^4
        println(x,y,z)
    end
end

15.602161 seconds

なさそうである。

何かで割って,余りが一致しないことはできそうか検討してみる。
function keisan(a)
    @time for x=0:a-1,y=0:a-1,z=0:a-1
        if (x^4+y^4+z^4+2)%a==((x+y+z+2)^4)%a
        println(x,",", y,",", z)
        end
    end
end

keisan (generic function with 1 method)

keisan(1)

0,0,0
0.000188 seconds (100 allocations: 2.594 KiB)

keisan(2)

0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1
0.001524 seconds (784 allocations: 18.875 KiB)

keisan(3)

0,0,1
0,1,0
0,1,1
0,1,2
0,2,1
1,0,0
1,0,1
1,0,2
1,1,0
1,2,0
2,0,1
2,1,0
0.003155 seconds (1.18 k allocations: 28.500 KiB)

keisan(4)

0,1,1
0,1,3
0,3,1
0,3,3
1,0,1
1,0,3
1,1,0
1,1,1
1,1,2
1,1,3
1,2,1
1,2,3
1,3,0
1,3,1
1,3,2
1,3,3
2,1,1
2,1,3
2,3,1
2,3,3
3,0,1
3,0,3
3,1,0
3,1,1
3,1,2
3,1,3
3,2,1
3,2,3
3,3,0
3,3,1
3,3,2
3,3,3
0.005630 seconds (3.12 k allocations: 75.141 KiB)

keisan(5)

1,1,1
1,3,4
1,4,3
2,2,4
2,3,3
2,4,2
3,1,4
3,2,3
3,3,2
3,4,1
4,1,3
4,2,2
4,3,1
0.002955 seconds (1.27 k allocations: 30.703 KiB)

keisan(6)

0,0,1
0,0,4
0,1,0
0,1,1
0,1,2
0,1,3
0,1,4
0,1,5
0,2,1
0,2,4
0,3,1
0,3,4
0,4,0
0,4,1
0,4,2
0,4,3
0,4,4
0,4,5
0,5,1
0,5,4
1,0,0
1,0,1
1,0,2
1,0,3
1,0,4
1,0,5
1,1,0
1,1,3
1,2,0
1,2,3
1,3,0
1,3,1
1,3,2
1,3,3
1,3,4
1,3,5
1,4,0
1,4,3
1,5,0
1,5,3
2,0,1
2,0,4
2,1,0
2,1,3
2,3,1
2,3,4
2,4,0
2,4,3
3,0,1
3,0,4
3,1,0
3,1,1
3,1,2
3,1,3
3,1,4
3,1,5
3,2,1
3,2,4
3,3,1
3,3,4
3,4,0
3,4,1
3,4,2
3,4,3
3,4,4
3,4,5
3,5,1
3,5,4
4,0,0
4,0,1
4,0,2
4,0,3
4,0,4
4,0,5
4,1,0
4,1,3
4,2,0
4,2,3
4,3,0
4,3,1
4,3,2
4,3,3
4,3,4
4,3,5
4,4,0
4,4,3
4,5,0
4,5,3
5,0,1
5,0,4
5,1,0
5,1,3
5,3,1
5,3,4
5,4,0
5,4,3
0.014065 seconds (9.36 k allocations: 225.609 KiB)

keisan(7)

0,0,0
0,0,2
0,1,1
0,1,4
0,2,0
0,2,4
0,4,1
0,4,2
1,0,1
1,0,4
1,1,0
1,1,4
1,2,2
1,2,4
1,3,4
1,4,0
1,4,1
1,4,2
1,4,3
1,4,4
1,4,5
1,4,6
1,5,4
1,6,4
2,0,0
2,0,4
2,1,2
2,1,4
2,2,1
2,2,2
2,4,0
2,4,1
3,1,4
3,4,1
3,5,6
3,6,5
4,0,1
4,0,2
4,1,0
4,1,1
4,1,2
4,1,3
4,1,4
4,1,5
4,1,6
4,2,0
4,2,1
4,3,1
4,4,1
4,4,4
4,5,1
4,6,1
5,1,4
5,3,6
5,4,1
5,6,3
6,1,4
6,3,5
6,4,1
6,5,3
0.010644 seconds (5.98 k allocations: 151.781 KiB)

keisan(8)

0.000016 seconds

おっと,8で割った余りが一致しない!調べてみよう。

4乗を8で割った余を調べる。
function keisan2(a)
    @time for x=0:a-1
        y=x^4%a
        println(x,",", y)
        end
    end

keisan2 (generic function with 1 method)

keisan2(8)

0,0
1,1
2,0
3,1
4,0
5,1
6,0
7,1
0.000924 seconds (542 allocations: 12.953 KiB)

4乗したものは8で割ると余りは0か1だね。

なので,\mod 8とすると,

(x+y+z+2)^4\equiv 0,\, 1

x^4+y^4+z^4+2\equiv 0+2,\, 1+2,\, 2+2,\, 3+2\equiv 2,\,3,\,4,\,5

よって,8で割った余りが一致しないので存在しない。(証明終わり)