3つの自然数があり、どの2つの積も残りの自然数で割ると余りが1になる。このような自然数の組をすべて求めよ。
三つの整数をa,b,cとおく。
a,b,cは自明にすべて相異なる。
そこで、a>b>cとしておくことにする。
パソコンでの総当たり計算
10000以下の自然数の組に対してチェックをしたところ、(5,3,2)しか条件を満たさなかった。
#include <iostream> #include <fstream> //uging namespace std; int main() { std::ofstream file; file.open("scan.dat"); std::cout<<"start!:"<<std::endl; int a,b,c; a=3; b=2; c=1; while(true) { while(true) { while(true) { //print std::cout<<" a:"<<a<<" b:"<<b<<" c:"<<c; if(((a*b)%c==1)&&((b*c)%a==1)&&(c*a)%b==1) { file<<a<<" "<<b<<" "<<c<<std::endl; std::cout<<std::endl; } else { std::cout<<" "; std::cout<<"\r"; } c++; if(c==b){c=1;break;} } b++; if(b==a){b=2;break;} } a++; } file.close(); return 0; }
分かっていること
- a,b,cは互いに素。
これだけ。値を取りうる範囲が絞れないのが痛い。
なんとか空き時間作って本気で取り組みたい。