Хотим посчитать, сколько пара натурального числа есть такие, что в + B = с . В качестве ввода моей функции у меня есть c
.Сумма разложения двух квадратов подсчета
Моя идея состояла в том, чтобы в первую очередь проверить, выполнено ли условие, а если нет, я хотел бы, чтобы цикл повторял желаемое выражение до c
. Если результат равен квадрату c
, то я хотел бы иметь count++
. Вопрос в том, почему это не работает?
Некоторые исправления добавлены.
int sum(int c) {
int b=1;
int a=1;
int count=0;
int result;
if (a*a + b*b != c*c)
{
for (int i=1; i<=c; i++)
{
b=i;
result = a*a + b*b;
if (result == c*c)
count++;
}
a++;
}
else
count++;
return count;
}
Проблема в том, что я до сих пор не понимаю, почему это не хочет работать.
Моя вторая идея состояла в том, чтобы подойти к нему с время цикла:
int sum(int c) {
int b=1;
int a=1;
int count=0;
int result;
if (a*a + b*b != c*c)
{
while(b<=c)
{
result = a*a + b*b;
if (result == c*c)
{count++;
b++;
}
else
b++;
}
a++;
}
else
count++;
return count;
}
Не работает, как хорошо.
У кого-нибудь есть идеи относительно того, как заставить его работать? Любая из этих двух версий? Может, намеки?
<= c в вашей петле для петли? –
Зачем тратить время на 'a * a', когда вы никогда не меняете значение' a' с '1'? – Gavin
Вы исправите это с помощью [отладчика] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) - пройдите через код, посмотрите на переменные, и вы поймете как все работает, когда вы закончите. – UKMonkey