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

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

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

Дано натуральное число n, можно его представить в виде суммы трех квадратов натуральных чисел. ЕСли можно,то указать тройку x^2+y^2+z^2=n. Проверьте программу, на правильность пожалуйста
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n, i, j, k, s;
            Console.Write(" Введите число  n = ");
            n = Convert.ToInt32(Console.ReadLine());
            for (i = 1; i <= n; i++)
            {
                for (j = 1; j <= n; j++)
                {
                    for (k = 1; k <= n; k++)
                    {
                        s = i * i + j * j + k * k;
                        if (s == n)
                        {
                            Console.WriteLine("  Тройка чисел х^2 + y^2 + z^2 = n ");
                            Console.WriteLine(" x = " + i);
                            Console.WriteLine(" y = " + j);
                            Console.WriteLine(" z = " + k);
                        }
                      
                        }
                }
            }

            Console.ReadLine();
        }
    }
}

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

textual
Листинг программы
  public class SoledData
  {
    public int x { get; set; }
    public int y { get; set; }
    public int z { get; set; }
  }
  internal class TripleNumber
  {
    private readonly int _sourceNumber;
 
    public TripleNumber(int sourceNumber)
    {
      _sourceNumber = sourceNumber;
    }
 
    public SoledData GetNumbers()
    {
      var curr = (int) (Math.Sqrt(_sourceNumber));
      return GetNumbers(curr);
    }
 
    private SoledData GetNumbers(int currentNumber)
    {
      if(currentNumber == 1)
        throw new Exception();
      var n_x = _sourceNumber - Math.Pow(currentNumber, 2);
      var y =(int) Math.Round((Math.Sqrt(n_x)));
      var n_z = n_x - (Math.Pow(y, 2));
      var z = Math.Round(Math.Sqrt(n_z));
      if ((int) (Math.Pow(currentNumber, 2) + Math.Pow(y, 2) + Math.Pow(z, 2)) == _sourceNumber && currentNumber > 0 && y > 0 && z > 0)
        return new SoledData {x = (int)currentNumber, y = (int) y, z = (int) z};
      return GetNumbers(currentNumber - 1);
    }
  }

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


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

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

15   голосов , оценка 4.4 из 5
Похожие ответы