Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2016, 17:26   #1
dmtrb
 
Регистрация: 18.12.2016
Сообщений: 6
По умолчанию Найти числа, которые можно представить в виде суммы квадратов двух натуральных чисел (функция)

Помогите, пожалуйста!Дано натуральное число n. Среди чисел 1, 2, ... n найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел(функция распознает полные квадраты)
dmtrb вне форума Ответить с цитированием
Старый 18.12.2016, 18:53   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,312
По умолчанию

Как вариант:
Код:
В цикле от 1 до N
   Извлечь корень из N.
   Получить целую часть (без округления).
   Возвести это число в квадрат.
   Сравнить с исходным (N).
   Если равно - печать.
Конец цикла.

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 18.12.2016, 19:48   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,567
По умолчанию

Это всего лишь функция, решающая только подзадачу - проверить на точный квадрат. А речь идет о сумме квадратов.
На Паскале это звучит примерно так:
Код:
program  abc ;

var  n,j,k,y1,y2,x1 : integer ;

function TstSqrt(ix : integer): integer ;
var
   rx : real ;  iy : integer ;
begin
   rx := ix ; iy := Trunc(Sqrt (rx)) ;
   if iy*iy = ix then TstSqrt := iy else TstSqrt := 0
end ;

begin
    Write ('Input n ') ; Readln (n) ;
    k := n div 2 ;
    for j := 1 to k do
      begin
        y1 := TstSqrt (j) ;
        if y1>0 then
          begin
           x1 := n - y1 * y1 ;
           y2 := TstSqrt (x1) ;
           if y2>0 then
             Writeln (n:4,y1:4,y2:4) ;
           end  ;
      end ;
    Readln (n) ;
end.
Ну а на С# студент сам перегонит

Последний раз редактировалось digitalis; 18.12.2016 в 22:18. Причина: удаление
digitalis вне форума Ответить с цитированием
Старый 18.12.2016, 21:26   #4
dmtrb
 
Регистрация: 18.12.2016
Сообщений: 6
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Как вариант:
Код:
В цикле от 1 до N
   Извлечь корень из N.
   Получить целую часть (без округления).
   Возвести это число в квадрат.
   Сравнить с исходным (N).
   Если равно - печать.
Конец цикла.

Как-то так, ...
Не указал, что нужен си шарп
dmtrb вне форума Ответить с цитированием
Старый 19.12.2016, 10:30   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ViktorR, а Вы ничего не перепутали?

например, число 25 можно представить как сумму квадратов чисел 3 и 4
25 = 3^2 + 4^2
Уверены, что Ваш алгоритм найдёт это решение?


dmtrb, так перепишете код на C#, какие проблемы?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание програмы на делфи циклы:ввести натуральное число и определять, можно ли число представить в виде суммы двух простых чисел Костяхалк Помощь студентам 24 28.01.2014 08:48
Можно ли число N представить в виде сумы двух квадратов натуральных чисел? Dima170792 Помощь студентам 2 24.06.2011 08:53
число в виде суммы квадратов натуральных чисел gambuz Паскаль, Turbo Pascal, PascalABC.NET 0 04.10.2010 11:07
C++/ Все способы представления заданного натурального числа N в виде суммы двух кубов натуральных чисел / acko Помощь студентам 1 25.09.2010 12:15
Дано натуральное число n. Можно ли представить его в виде суммы двух квадратов натуральных чисел? Сеня Помощь студентам 3 29.01.2009 01:17