Генерация случайных числе. Прерывание генерации - C#

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

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

По условию вводится однозначное натуральное M, Можно ли представить число в виде суммы квадратов двух других однозначных натуральных. Генерацию чисел с подбором записал, но проблема в том, что, например, если мы введем число, которое нельзя представить в виде суммы квадратов двух других - будет идти бесконечное кол-во циклов.

Как прервать цикл, когда будут проверены все комбинации чисел ?

Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApplication34
  7. {
  8. class Program
  9. {
  10. static void Main()
  11. {
  12. Console.WriteLine("Введите натуральное однозначное число M");
  13. int M;
  14. int A = 0 ;
  15. int B = 0;
  16. string s = new string(' ',1);
  17. do
  18. {
  19. M = Convert.ToInt32(Console.ReadLine());
  20. if (M < 0 || M > 10)
  21. Console.WriteLine("Попробуйте ще раз, введите М [1;10)");
  22. }
  23. while (M < 0 || M >10);
  24. do
  25. {
  26. Random r = new Random();
  27. A = r.Next(1,10);
  28. B = r.Next(1,10);
  29. Console.Write(A);
  30. Console.Write(s);
  31. Console.Write(B);
  32. Console.WriteLine();
  33. if (M != Math.Pow(A, 2) + Math.Pow(B, 2))
  34. {
  35. Console.WriteLine("Таких значений нет");
  36. }
  37. else
  38. {
  39. Console.WriteLine("Ваше число можно представить в виде суммы квадратов >>{0}", M);
  40. Console.WriteLine("Ваши числа {0}^2 + {1}^2 ", A, B);
  41. break;
  42.  
  43. }
  44.  
  45. }
  46. while (A != 0 && B != 0);
  47. Console.ReadKey();
  48.  
  49. }
  50. }
  51. }

Решение задачи: «Генерация случайных числе. Прерывание генерации»

textual
Листинг программы
  1.         static void Main(string[] args)
  2.         {
  3.             Console.WriteLine("Введите натуральное однозначное число M");
  4.             int M;
  5.             int A = 0;
  6.             int B = 0;
  7.             string s = new string(' ',1);
  8.  
  9.             do
  10.             {
  11.                 M = Convert.ToInt32(Console.ReadLine());
  12.                 if (M < 0 || M > 10)
  13.  
  14.                     Console.WriteLine("Попробуйте ще раз, введите М [1;10)");
  15.  
  16.             } while (M < 0 || M > 10);
  17.  
  18.             double sqrt = Math.Sqrt(M);
  19.             bool found = false;
  20.             for (int i = 1; i < sqrt; i++)
  21.             {
  22.                 if (found) break;
  23.                 for (int j = 1; j < sqrt; j++)
  24.                 {
  25.                     if ((i * i + j * j) == M)
  26.                     {
  27.                         A = i;
  28.                         B = j;
  29.                         found = true;
  30.                         break;
  31.                     }
  32.                 }
  33.             }
  34.             if (found)
  35.             {
  36.                 Console.WriteLine("Ваше число можно представить в виде суммы квадратов >>{0}", M);
  37.                 Console.WriteLine("Ваши числа {0}^2 + {1}^2 ", A, B);
  38.             }
  39.             else
  40.             {
  41.                 Console.WriteLine("Таких значений нет");
  42.             }
  43.  
  44.             Console.ReadLine();
  45.         }

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


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

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

10   голосов , оценка 3.6 из 5

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

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

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