Генерация случайных числе. Прерывание генерации - C#
Формулировка задачи:
По условию вводится однозначное натуральное M, Можно ли представить число в виде суммы квадратов двух других однозначных натуральных. Генерацию чисел с подбором записал, но проблема в том, что, например, если мы введем число, которое нельзя представить в виде суммы квадратов двух других - будет идти бесконечное кол-во циклов.
Как прервать цикл, когда будут проверены все комбинации чисел ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication34
{
class Program
{
static void Main()
{
Console.WriteLine("Введите натуральное однозначное число M");
int M;
int A = 0 ;
int B = 0;
string s = new string(' ',1);
do
{
M = Convert.ToInt32(Console.ReadLine());
if (M < 0 || M > 10)
Console.WriteLine("Попробуйте ще раз, введите М [1;10)");
}
while (M < 0 || M >10);
do
{
Random r = new Random();
A = r.Next(1,10);
B = r.Next(1,10);
Console.Write(A);
Console.Write(s);
Console.Write(B);
Console.WriteLine();
if (M != Math.Pow(A, 2) + Math.Pow(B, 2))
{
Console.WriteLine("Таких значений нет");
}
else
{
Console.WriteLine("Ваше число можно представить в виде суммы квадратов >>{0}", M);
Console.WriteLine("Ваши числа {0}^2 + {1}^2 ", A, B);
break;
}
}
while (A != 0 && B != 0);
Console.ReadKey();
}
}
}Решение задачи: «Генерация случайных числе. Прерывание генерации»
textual
Листинг программы
static void Main(string[] args)
{
Console.WriteLine("Введите натуральное однозначное число M");
int M;
int A = 0;
int B = 0;
string s = new string(' ',1);
do
{
M = Convert.ToInt32(Console.ReadLine());
if (M < 0 || M > 10)
Console.WriteLine("Попробуйте ще раз, введите М [1;10)");
} while (M < 0 || M > 10);
double sqrt = Math.Sqrt(M);
bool found = false;
for (int i = 1; i < sqrt; i++)
{
if (found) break;
for (int j = 1; j < sqrt; j++)
{
if ((i * i + j * j) == M)
{
A = i;
B = j;
found = true;
break;
}
}
}
if (found)
{
Console.WriteLine("Ваше число можно представить в виде суммы квадратов >>{0}", M);
Console.WriteLine("Ваши числа {0}^2 + {1}^2 ", A, B);
}
else
{
Console.WriteLine("Таких значений нет");
}
Console.ReadLine();
}