//+------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------+int start(){
int SchPar=0;
for(int i=100;i>=2;i--){
for(int ii=100;ii>=2;ii--){
if(i+ii<100){
SchPar++;
}
}
}
Alert("Общее число пар чисел, сумма которых менее 100 = ",SchPar);
return(0);
}
//+------------------------------------------------------------------+
フレーズBの意味は?和を取るときにAが数字を当てないことをどうして事前に知っているのだろうか。これは、実はとても簡潔な答えで、数字に関する情報はほぼすべて含まれているのです
もし、最初の識者が2つの素数の積を言われたら、すぐに答えがわかっただろう。
これは当たり前のことです。要は、台詞の2番目のコメントを読み解くことです。
любое разложение суммы, сообщенной Б, на два слагаемых приводит к тому, что хотя бы одно из слагаемых содержит два множителя.
何か変わると思いますか?
ラジカルに。見てください。
1より大きい数の組の可能なすべての組み合わせを書き出すと、その和は
のうち、100に満たないもの(2401組ある)。
同じ数字が2つ思い浮かべば、組の数はもっと大きくなる。チェックする。
では、このスクリプトをチャートに投影してみると、どうでしょう。和が100未満のペアの数=4656。
もし、最初の識者が2つの素数の積を言われたら、すぐに答えがわかっただろう。
そうですね、でも、こんなに早く見つけたと言って捕まるかどうかは定かではありません。
ルート見てください。
同じ数字が2つ思い浮かべば、組の数はもっと大きくなる。確認しよう。
さて、このスクリプトをチャートに投げてみると、どうでしょう。和が100未満のペアの数=4656。
for(int ii=100;ii>=2;ii--) - ここでは、このような方法はとらないはずです。
が、このように
for(int ii=i-1;ii>=2;ii--)
for(int ii=100;ii>=2;ii--) - こんな感じではありません。
しかし、このように
for(int ii=i-1;ii>=2;ii--)
いいえ、この方法では、2つ目の数字が常に1少なくなるため、2つの同じ数字の組み合わせを検索することはできません。
私たちは、今あるものを使っていくのです。
また、ループの中で数値のペアを重複させる必要もありません。
では、このように試してみてください。
for(int ii=i;ii>=2;ii--)