fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int maxn = 1e6;
  5. int sieve[maxn];
  6. int main()
  7. {
  8. for(int i = 0; i < maxn; ++i) {
  9. sieve[i] = 1;
  10. }
  11. for(int i = 2; i < maxn; ++i) {
  12. for(int j = 2 * i; j < maxn; j += i) {
  13. sieve[j] = 0;
  14. }
  15. }
  16. sieve[0] = 0;
  17.  
  18. // for (int i = 0; i < 20; ++i) {
  19. // cout << i << " " << sieve[i] << endl;
  20. // }
  21. int n;
  22. cin >> n;
  23. vector<int> vec(n);
  24. for (int& a: vec) {
  25. cin >> a;
  26. }
  27.  
  28. bool wfail = 0;
  29. int cnt = 0;
  30. for (int i = 0; i <= n - 1; ++i) {
  31. if (i == n - 1) {
  32. if (vec[i] == 2 || vec[i] == 0) {
  33. break;
  34. }
  35. if (sieve[vec[i]] == 1) {
  36. wfail = true;
  37. break;
  38. }
  39. }
  40.  
  41. if (vec[i] == 2 || sieve[vec[i]] == 0) {
  42. continue;
  43. } else {
  44. vec[i + 1]++;
  45. cnt++;
  46. continue;
  47. }
  48. }
  49.  
  50. if (wfail == true) {
  51. cout << "-1";
  52. } else {
  53. cout << cnt;
  54. }
  55.  
  56. }
Success #stdin #stdout 0.03s 7484KB
stdin
3
1 2 3
stdout
2