Informatică, întrebare adresată de comancristiandp4nqmq, 9 ani în urmă

Se dă următorul șir de numere naturale:

1, 3, 9, 25, 65, 161, 385, 897, 2049, 4609, 10241, 22529, 49153, 106497…

Pentru un număr natural n, citit de la tastatură, afișati numărul de divizori pentru fiecare dintre primii n termeni din șir.

VREAU O REZOLVARE DE CLASA A 9-A
#include
using namespace std;
int main()

Răspunsuri la întrebare

Răspuns de ated
4
#include <iostream>

using namespace std;

int main()
{
    int n; cin >> n;
    for (int i=0; i<n; i++)
    {
        // Formula sirului e i*(2^i)+1

        // Calculeaza 2^i
        int p2 = 1;
        for (int j=0; j<i; j++)
            p2 *= 2;
        int nr = i*p2+1;

        int nrDiv = 2; // 1 si numarul insusi
        for (int j=2; j<=nr/2; j++)
            if (nr%j==0)
                nrDiv++;
        if (nr == 1)
            nrDiv = 1;
        cout << nr << " - " << nrDiv << "\n";
    }
    return 0;
}


comancristiandp4nqmq: ms mult <3
ated: cu placere :)
Răspuns de fredyrychfred
4
#include
#include
using namespace std;

int main()
{unsigned long long int n,x,i,p,d,k;
cin>>n;
for(i=0;i{ k=1;d=2;
x=i*pow(2,i)+1;
while(x>1)
{
p = 0;
while(x%d==0)
{p++;
x=x/d;
}

k=k*(p+1);
d++;
if(x>1 && d * d > x)d = x;

}
cout<}

return 0;
}

fredyrychfred: nclude <iostream>
#include <cmath>
using namespace std;

int main()
{unsigned long long int n,x,i,p,d,k;
cin>>n;
for(i=0;i<n;i++)
{ k=1;d=2;
x=i*pow(2,i)+1;
while(x>1)
{
p = 0;
while(x%d==0)
{p++;
x=x/d;
}

k=k*(p+1);
d++;
if(x>1 && d * d > x)d = x;

}
cout<<k<<" ";
}

return 0;
}
Alte întrebări interesante