Se dă un număr natural n, par, mai mare decat 2. Scrieţi-l pe n ca sumă de 2 numere prime în toate modurile posibile.
Răspunsuri la întrebare
Răspuns de
0
Iti trimit sursa mea la problema de mai sus. E o problema de pe pbinfo in care se foloseste ciurul lui Eratostene. Succes!
#include <bits/stdc++.h>
#define nmax 11111130
using namespace std;
long long i, j, n, k, x, k1;
int v[nmax/9];
bool w[nmax];
struct nod
{
int xx;
int yy;
} pr[100000];
int main()
{
cin >> n;
w[0] = w[1] = true;
for(i = 2; i <= n/2; i ++)
if(!w[i])
{
v[++ k] = i;
for(j = i * i; j <= n; j = i + j)
w[j] = true;
}
for(i = 2; i <= k; i ++)
{
x = n - v[i];
if(!w[x]) pr[++ k1].xx = v[i], pr[k1].yy = x;
}
for(i = 1; i <= k1; i ++)
cout << pr[i].xx << " " << pr[i].yy << "\n";
for(i = k1; i >= 1; i --)
cout << pr[i].yy << " " << pr[i].xx << "\n";
return 0;
}
#include <bits/stdc++.h>
#define nmax 11111130
using namespace std;
long long i, j, n, k, x, k1;
int v[nmax/9];
bool w[nmax];
struct nod
{
int xx;
int yy;
} pr[100000];
int main()
{
cin >> n;
w[0] = w[1] = true;
for(i = 2; i <= n/2; i ++)
if(!w[i])
{
v[++ k] = i;
for(j = i * i; j <= n; j = i + j)
w[j] = true;
}
for(i = 2; i <= k; i ++)
{
x = n - v[i];
if(!w[x]) pr[++ k1].xx = v[i], pr[k1].yy = x;
}
for(i = 1; i <= k1; i ++)
cout << pr[i].xx << " " << pr[i].yy << "\n";
for(i = k1; i >= 1; i --)
cout << pr[i].yy << " " << pr[i].xx << "\n";
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Geografie,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Geografie,
9 ani în urmă