[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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д