Определить, можно ли представить число в виде суммы двух квадратов натуральных чисел - C (СИ)
Формулировка задачи:
Ввести натуральное число n.
Можно ли представить его в виде суммы двух квадратов натуральных чисел?
Если можно, то указать все пары "х" и "у" таких натуральных чисел, что n=(x^2)+(y^2), x>=y.
Произвести трассировку программы, выполнение по шагом, наблюдение за значений переменных в окне watch.
Решение задачи: «Определить, можно ли представить число в виде суммы двух квадратов натуральных чисел»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int count, n, op1, op2, temp;
printf("enter value: ");
scanf("%i", &n);
count = 0;
temp = n * n;
for(op1 = 1; op1 <= n; op1++)
for(op2 = op1; op2 <= n; op2++)
if(op1*op1 + op2*op2 == temp){
count++;
printf("%i : %i\n", op1, op2);
}
if(count == 0)
printf("numbers not found\n");
system("pause");
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Вводятся данные: число от пользователя, сохраняется в переменной
n. - Инициализируются счётчики:
countдля подсчёта найденных пар чисел,tempдля временного хранения значенияn*n. - В двух вложенных циклах перебираются все возможные комбинации двух чисел от 1 до
n. - Если сумма квадратов этих чисел равна
temp, то увеличивается счётчикcountи выводятся значения этих чисел. - Если после перебора всех комбинаций
countравен 0, то выводится сообщениеnumbers not found. - Используется функция
system(pause)для приостановки работы программы до нажатия клавиши. - В конце программы возвращается 0, что означает успешный конец работы.