Subprogramul Max Imp are doi parametri, a si b. prin care primeşte câte un număr natural
(2Sa<b400). Subprogramul returneaza cel mai mare numar natural din intervalul (a, b) pentru
care produsul divizorilor săi impari pozitivi este strict mai mare decât el însuşi sau 0. dacă nu există
niciun astfel de număr. Scrieti definiția completă a subprogramului
Exemplu: daca a=14 si b=19, atunci subprogramul returnează 18 (1.3.9=27>18)
whow:
in interval e 2<=a
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
using namespace std;
int a,b;
int MaxImp(int a, int b)
{
int p, d, num,gasit=0;
for (num=b; num>=a; num--)
{
p=1;
for (d=1; d*d<num; d++)
{
if (num%d==0)
{
if (d%2==1) p*=d;
if ((num/d)%d==1) p*=num/d;
}
}
if (d*d==num)
{
if (d%2==1) p*=d;
}
if (p>num)
{
gasit=1; break;
}
}
if (gasit) return num;
else return 0;
}
int main()
{
cin >> a >> b;
cout << MaxImp(a,b);
return 0;
}
Explicație:
La o adica nu e cu mult mai rapid, deoarece break ne arunca din bucla for...
Alte întrebări interesante
Matematică,
8 ani în urmă
Ed. muzicală,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Geografie,
9 ani în urmă