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