Advertisement
NoHatred0

Untitled

Dec 3rd, 2014
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. /*
  2. Să se determine perechi de numere consecutive care se descompun în produs de două numere
  3. prime distincte, dintr-un interval dat [a,b]. Exemplu: 57,58 cu 57=3*19 si 58=2*29.
  4. */
  5.  
  6. #include <iostream>
  7. #include <math.h>
  8. using namespace std;
  9.  
  10. int prim(int k)
  11. {
  12. int i,ok=1;
  13. for(i=2;i<=sqrt(k);i++)
  14. {
  15. if(k%i==0) ok=0;
  16. }
  17. return ok;
  18. }
  19. int main()
  20. {
  21. int a,b,i,j,k,nr1=0,nr2=0,ok1=0,ok2=0;
  22. cout<<"Dati intervalul:\n a=";cin>>a;
  23. cout<<" b=";cin>>b;
  24. int v[100], count=1;
  25. for(i=1;i<=b;i++) v[i]=0;
  26. for(i=a;i<b;i++) //parcurg numerele din interval
  27. {
  28. for(j=2;j<=i/2;j++)
  29. {
  30. for(k=2;k<=i/2;k++)
  31. {
  32. if(prim(j)==1 && prim(k)==1 && j*k==i && j!=k && ok1==0) { nr1=i; ok1=1; }
  33. }
  34. }
  35. for(j=2;j<=(i+1)/2;j++)
  36. {
  37. for(k=2;k<=(i+1)/2;k++)
  38. {
  39. if(prim(j)==1 && prim(k)==1 && j*k==(i+1) && j!=k && ok2==0) { nr2=i+1; ok2=1; }
  40. }
  41. }
  42. if(nr2-nr1!=1) {ok1=0;ok2=0;}
  43. else if(nr2-nr1==1)
  44. {
  45. for(j=1;j<=b;j++) if(v[j]==nr1 && v[j+1]==nr2) { ok1=0; ok2=0;}
  46. }
  47. if(ok1==1 && ok2==1) {v[count]=nr1; v[count+1]=nr2; count+=2;}
  48. }
  49. 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";
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement