Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Să se determine perechi de numere consecutive care se descompun în produs de două numere
- prime distincte, dintr-un interval dat [a,b]. Exemplu: 57,58 cu 57=3*19 si 58=2*29.
- */
- #include <iostream>
- #include <math.h>
- using namespace std;
- int prim(int k)
- {
- int i,ok=1;
- for(i=2;i<=sqrt(k);i++)
- {
- if(k%i==0) ok=0;
- }
- return ok;
- }
- int main()
- {
- int a,b,i,j,k,nr1=0,nr2=0,ok1=0,ok2=0;
- cout<<"Dati intervalul:\n a=";cin>>a;
- cout<<" b=";cin>>b;
- int v[100], count=1;
- for(i=1;i<=b;i++) v[i]=0;
- for(i=a;i<b;i++) //parcurg numerele din interval
- {
- for(j=2;j<=i/2;j++)
- {
- for(k=2;k<=i/2;k++)
- {
- if(prim(j)==1 && prim(k)==1 && j*k==i && j!=k && ok1==0) { nr1=i; ok1=1; }
- }
- }
- for(j=2;j<=(i+1)/2;j++)
- {
- for(k=2;k<=(i+1)/2;k++)
- {
- if(prim(j)==1 && prim(k)==1 && j*k==(i+1) && j!=k && ok2==0) { nr2=i+1; ok2=1; }
- }
- }
- if(nr2-nr1!=1) {ok1=0;ok2=0;}
- else if(nr2-nr1==1)
- {
- for(j=1;j<=b;j++) if(v[j]==nr1 && v[j+1]==nr2) { ok1=0; ok2=0;}
- }
- if(ok1==1 && ok2==1) {v[count]=nr1; v[count+1]=nr2; count+=2;}
- }
- for(i=1;i<b;i++) if(v[i]!=0 && v[i+1]!=0 && v[i+1]-v[i]==1) cout<<v[i]<<" "<<v[i+1]<<"\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement