at0mic |
Отправлено: 07.05.2004, 19:15 |
|
Не зарегистрирован
|
Помогите с задачей Ферма(та, что в книге Кнута находится(там ещё её алгоритм дан)). Типа что число надо разложить на целые множители. плиз, а то у меня времени на неё уже не хватает.... |
|
exp |
Отправлено: 07.05.2004, 23:32 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Так, в общем не нашел я в Кнуте ни задачи ни описания алгоритма,
но вот что могу предложить...
CODE |
void FindMultiplier(int N,AnsiString &Multiplier)
{
int i = 2; // Будем искать по порядку
while((i<=N)&&(N % i !=0)){i++;} //т. к. на 1 делить-беспонт-начнем с 2 Multiplier+=" * "+IntToStr(i); //добавим найденное к строке
if(i!=N) // если то, что мы нашли не есть само
{ // проверяемое число, то
FindMultiplier(N/i , Multiplier); // повторим эти операции с N/i
}
return; // Das glucklich ende! (Happy End! , Fin)
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int N = CSpinEdit1->Value;
AnsiString Multipliers="1";
FindMultiplier(N,Multipliers);
Label1->Caption = Multipliers;
}
|
Думаю с коментами разберешься
|
|
|