#include<iostream>
#include<cmath>
using namespace std;
int main(int argc,char* argv[])
{
double m=0,n=0,i=0,k=0;
cout<<"enter 4 integer positive numerals"<<endl;
cin>>m>>n>>i>>k;
bool flag=false;
cout<<"Numerals:"<<endl;
for(int number=1;number<=3600;number++)
if ((number==pow(n,2)+pow(m,2)) && (number!=5*i+5*k))
{
cout<<number<<endl;
flag=true;
}
if (flag==false)cout<<"\nThere are no that numerals!"<<endl;
system("pause");
return 0;
}
помогите решить задачку
Напечатать все целые числа в диапазоне от 1 до 3600, которые представляемы виде n^2+m^2, но которые нельзя представить как 5i+5k (m,n,I,k >0) Задача то теме множество
2. n,m,i,k откуда берутся? задаются с клавиатуры?
3. n,m,i,k целые числа?
числа целые и задаются с клавиатуры.
читаем вводные числа
цикл фор от j= 1 до 3600
иф(j первое условие) энд (j второе условие)
вывод числа
чё тут думать?
спасибо и за это дальше уже сама как нить разберусь!
Код:
Насколько я понял, должно быть так. Написано на Си, алгоритм для бейсика или паскаля 1 и тот же
если i и k вводятся с клавиатуры, то 5i+5k естественно == единственному числу.
задача стоит так:
Цитата:
все целые числа в диапазоне от 1 до 3600, которые представляемы виде n^2+m^2, но которые нельзя представить как 5i+5k (m,n,I,k >0)
т.е в вашем понимании это означает "найти число, представимое в виде суммы квадратов двух чисел и не равное какому-то числу"? имхо неверно.
скорее всего, задача состоит в том, что числа i,k,n,m любые, и надо их програмно найти :)
да,нужно найти эти числа.
Подскажите хоть примерно, какой должен быть алгоритм:o
Сразу выкинуть все числа которые нацело делятся на 5 :)
Код:
for n := 1 to 59 do
for m := n to 59 do
{ т.к. 60^2 == 3600, то при n Или m >= 60 сумма
n^2+m^2 уже не попадает в диапазон
начальное значение для m равное n защищает от повторений }
begin
candidateNumber := n*n + m*m;
if (candidateNumber <> 5) { 5 представимо в виде n^2+m^2, но не
представимо как 5i+5k}
and (candidateNumber mod 5 = 0) { представимо как 5i+5k }
then
continue;
writeln(candidateNumber, ' == ', n, '*', n, ' + ', m, '*', m);
end;
for m := n to 59 do
{ т.к. 60^2 == 3600, то при n Или m >= 60 сумма
n^2+m^2 уже не попадает в диапазон
начальное значение для m равное n защищает от повторений }
begin
candidateNumber := n*n + m*m;
if (candidateNumber <> 5) { 5 представимо в виде n^2+m^2, но не
представимо как 5i+5k}
and (candidateNumber mod 5 = 0) { представимо как 5i+5k }
then
continue;
writeln(candidateNumber, ' == ', n, '*', n, ' + ', m, '*', m);
end;
Мне это программа очень пригодилась! Еще рназ спасиб))