fork(6) download
  1. //untuk kujawab.com
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5.  
  6. int input[1000005];
  7. bool primes [1000005];
  8. int n,maxval(0);
  9.  
  10. void sieve(int x){
  11. if (primes[x]){
  12. for (int i= (2*x); i<=maxval+2; i+=x){
  13. primes[i]=false;
  14. }
  15. }
  16. }
  17.  
  18. int main(){
  19.  
  20. memset (primes, true, sizeof primes);
  21. cin>>n;
  22.  
  23. bool valid=false; //untuk cek ada inputan bernilai 2 atau tidak
  24.  
  25. ///INPUT
  26. for (int i=0;i<n;i++){
  27. cin>>input[i];
  28. if (input[i]==2){valid=true;}
  29. if (maxval<input[i]){maxval=input[i];}
  30. }
  31.  
  32. if (!valid){ //Karna tidak mungkin ada twin prime jika tidak ada '2'
  33. cout<<"TIDAK ADA"<<endl;
  34. return 0;
  35. }
  36.  
  37.  
  38.  
  39. //aktifkan SIEVE OF ERATOSTHENES
  40. for (int i=2;i<=maxval;i++){
  41. sieve(i);
  42.  
  43. }
  44.  
  45.  
  46.  
  47. //Cek jika ada (P1 + 2), (P2 + 2), (P3 + 2), ..., (PN + 2) yang prima
  48. for (int i=0;i<n;i++){
  49. if (input[i]!=2){
  50. int twinp=input[i]+2;
  51. if (primes[twinp]){cout<<"ADA"<<endl; return 0;}
  52. }
  53. }
  54.  
  55. cout<<"TIDAK ADA"<<endl;
  56.  
  57.  
  58.  
  59. return 0;
  60. }
  61.  
Success #stdin #stdout 0s 8344KB
stdin
6
2 7 13 19 23 97
stdout
TIDAK ADA