[Arşiv] Ticaretle ilgisi olmayan saf matematik, fizik, kimya vb. beyin jimnastiği bulmacaları - sayfa 428

 

Bu apaçık. Ana şey, diyaloğun ikinci yorumunu deşifre etmektir.

любое разложение суммы, сообщенной Б, на два слагаемых приводит к тому, что хотя бы одно из слагаемых содержит два множителя.

 
ValS :

Bir şeylerin değişeceğini düşünüyor musun?


Kesinlikle. Bak.

Birden büyük sayı çiftlerinin olası tüm kombinasyonlarını yazıyoruz, toplam
bunlardan yüzden az var (bu tür 2401 çift var).

İki özdeş sayı düşünebilirseniz, çiftlerin sayısı çok daha fazla olur. Kontrol ediyoruz:

 //+------------------------------------------------------------------+
//| 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 );
}
//+------------------------------------------------------------------+

Şimdi bu senaryoyu grafiğe atıyoruz ve ne görüyoruz? Toplamı yüzden küçük olan çift sayısı = 4656.

 
ValS :

İlk bilge adama iki asal sayının çarpımı söylenmiş olsaydı, cevabı hemen bulurdu.

Evet, ama doğruyu bu kadar çabuk bulduğunu söyleyerek uyuduğu bir gerçek değil.
 
"Uyku" nedir? Doğruyu söylediklerini varsaymak muhtemelen en iyisidir.
 
drknn :


Kesinlikle. Bak.

İki özdeş sayı düşünebilirseniz, çiftlerin sayısı çok daha fazla olur. Kontrol ediyoruz:

Şimdi bu senaryoyu grafiğe atıyoruz ve ne görüyoruz? Toplamı yüzden küçük olan çift sayısı = 4656.


for(int ii=100;ii>=2;ii--) - burada yanlış olmalı,

ama böyle

for(int ii=i-1;ii>=2;ii--)

 
Pekala, kendimi ele verirdim. Dikkatsiz bir kelimeyle pes ederdim.
 
ValS :


for(int ii=100;ii>=2;ii--) - burada yanlış olmalı,

ama böyle

for(int ii=i-1;ii>=2;ii--)


Hayır - bu nedenle, ikinci her zaman 1 eksik olacağından, iki özdeş sayının bir kombinasyonunu asla ayırmayacağız.
 

Ne olduğundan başlıyoruz.

Ve bir çift sayı döngüsünde çoğaltmamalısınız.

 

Peki o zaman bunu dene

for(int ii=i;ii>=2;ii--)

 
Bu hiçbir şeyi değiştirmeyecek, sanırım.