[Code review] Дано натуральное число n, можно его представить в виде суммы трех квадратов натуральных чисел - C#

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число n, можно его представить в виде суммы трех квадратов натуральных чисел. ЕСли можно,то указать тройку x^2+y^2+z^2=n. Проверьте программу, на правильность пожалуйста
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication1
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. int n, i, j, k, s;
  12. Console.Write(" Введите число n = ");
  13. n = Convert.ToInt32(Console.ReadLine());
  14. for (i = 1; i <= n; i++)
  15. {
  16. for (j = 1; j <= n; j++)
  17. {
  18. for (k = 1; k <= n; k++)
  19. {
  20. s = i * i + j * j + k * k;
  21. if (s == n)
  22. {
  23. Console.WriteLine(" Тройка чисел х^2 + y^2 + z^2 = n ");
  24. Console.WriteLine(" x = " + i);
  25. Console.WriteLine(" y = " + j);
  26. Console.WriteLine(" z = " + k);
  27. }
  28. }
  29. }
  30. }
  31.  
  32. Console.ReadLine();
  33. }
  34. }
  35. }

Решение задачи: «[Code review] Дано натуральное число n, можно его представить в виде суммы трех квадратов натуральных чисел»

textual
Листинг программы
  1.   public class SoledData
  2.   {
  3.     public int x { get; set; }
  4.     public int y { get; set; }
  5.     public int z { get; set; }
  6.   }
  7.   internal class TripleNumber
  8.   {
  9.     private readonly int _sourceNumber;
  10.  
  11.     public TripleNumber(int sourceNumber)
  12.     {
  13.       _sourceNumber = sourceNumber;
  14.     }
  15.  
  16.     public SoledData GetNumbers()
  17.     {
  18.       var curr = (int) (Math.Sqrt(_sourceNumber));
  19.       return GetNumbers(curr);
  20.     }
  21.  
  22.     private SoledData GetNumbers(int currentNumber)
  23.     {
  24.       if(currentNumber == 1)
  25.         throw new Exception();
  26.       var n_x = _sourceNumber - Math.Pow(currentNumber, 2);
  27.       var y =(int) Math.Round((Math.Sqrt(n_x)));
  28.       var n_z = n_x - (Math.Pow(y, 2));
  29.       var z = Math.Round(Math.Sqrt(n_z));
  30.       if ((int) (Math.Pow(currentNumber, 2) + Math.Pow(y, 2) + Math.Pow(z, 2)) == _sourceNumber && currentNumber > 0 && y > 0 && z > 0)
  31.         return new SoledData {x = (int)currentNumber, y = (int) y, z = (int) z};
  32.       return GetNumbers(currentNumber - 1);
  33.     }
  34.   }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы