Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Andrew Ezhguroff                     2:5020/400     23 May 2001  05:45:44
 To : Denis Pozhidaev
 Subject : Re: задачка на C++
 -------------------------------------------------------------------------------- 
 
 Привет! "Denis Pozhidaev" <Denis.Pozhidaev@p100.f80.n5005.z2.fidonet.org>
 сообщил(а) нам:
 
 Кстати, собственно программа:
 
 #include <stdio.h>
 
 // Поиск наибольшего обшего делителя
 int nod(int Val_1, int Val_2){
   if(Val_1<Val_2){
     int Tmp=Val_1; Val_1=Val_2; Val_2=Tmp;
   }
   while(Val_2!=0){
     int Tmp=Val_1%Val_2; Val_1=Val_2; Val_2=Tmp;
   }
   return Val_1;
 }
 
 // Генерация общего знаменателя дробей от 1/2 до 1/Max_Znam
 int Ob_Znam(int Max_Znam){
   int Tmp_Znam = 1;
   for(int Cur_Znam=2; Cur_Znam<=Max_Znam; Cur_Znam++){
     Tmp_Znam*=Cur_Znam/nod(Tmp_Znam, Cur_Znam);
   }
   return Tmp_Znam;
 }
 
 // Генерация списка дробей для знаменателей от 2 до Max_Znam
 void Out_List(int Max_Znam){
   int Cur_Znam = Ob_Znam(Max_Znam); // 420
   int Min_Chis = Cur_Znam/Max_Znam; // 60
   int Max_Chis = Cur_Znam-Min_Chis; // 360
   for(int Cur_Chis=Min_Chis; Cur_Chis<=Max_Chis; Cur_Chis++){
     int Tmp_Nod = nod(Cur_Znam, Cur_Chis);
     if(Tmp_Nod>=Min_Chis){
       printf("%0d/%0d\n", Cur_Chis/Tmp_Nod, Cur_Znam/Tmp_Nod);
     }
   }
 }
 
 int main(void){
   Out_List(7);
 }
 
 Главное отличие от предложенного ранее алгоритма в том, что для уменьшения
 кол-ва вычислений выдача на печать производится не по значению знаменателя,
 а по значению HОД(числитель, знаменатель). А т.к.
 Min_Chis/Cur_Znam==1/Max_Znam (т.е. в нашем случае - 1/7), то для любого HОД
 
 >= Min_Chis знаменатель <= Max_Znam.
 
 С уважением, Андрей.
 --- ifmail v.2.15dev5
  * Origin: COMSTAR Telecommunications (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 задачка на C++   Denis Pozhidaev   21 May 2001 00:28:57 
 Re: задачка на C++   Andrew Ezhguroff   22 May 2001 03:47:40 
 Re: задачка на C++   Denis Pozhidaev   22 May 2001 19:34:08 
 Re: задачка на C++   Andrew Ezhguroff   23 May 2001 02:12:17 
 Re: задачка на C++   Andrew Ezhguroff   23 May 2001 05:45:44 
 Re: задачка на C++   Ihor Bobak   22 May 2001 13:46:24 
 задачка на C++   Dmitry O. Kolomiets   21 May 2001 22:16:07 
 Re: задачка на C++   Ilia Semenov   23 May 2001 19:59:26 
Архивное /ru.algorithms/121688909b0cb.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional