Consecutive Prime Sum | Code Vita 2016 | round 1

Problem Description:

Some prime numbers can be expressed as Sum of other consecutive prime numbers.
For example

5 = 2 + 3
17 = 2 + 3 + 5 + 7
41 = 2 + 3 + 5 + 7 + 11 + 13

Your task is to find out how many prime numbers which satisfy this property are present in the range 3 to N subject to a constraint that summation should always start with number 2.
Write code to find out number of prime numbers that satisfy the above mentioned property in a given range.

Input Format:
First line contains a number N
Output Format:
Print the total number of all such prime numbers which are less than or equal to N.
Sample Input and Output


SNo.InputOutputComment
1202
(Below 20, there are 2 such numbers: 5 and 17).
5=2+3
17=2+3+5+7
2151

Program:

#include <stdio.h>
int prime(int b)
{
    int j,cnt;
   cnt=1;
     for(j=2;j<=b/2;j++)
     {
         if(b%j==0)
         cnt=0;
     }
     if(cnt==0)
     return 1;
     else
     return 0;
}
int main() {
 int i,j,n,cnt,a[25],c,sum=0,count=0,k=0;
 scanf("%d",&n);
 for(i=2;i<=n;i++)
 {
     cnt=1;
     for(j=2;j<=n/2;j++)
     {
         if(i%j==0)
         cnt=0;
     }
     if(cnt==1)
     {
        a[k]=i;
        k++;
        }
 }
 for(i=0;i<k;i++)
 {
     sum=sum+a[i];
    c= prime(sum);
    if(c==1)
    count++;
 }
 printf("%d",count);
 return 0;
}

Output:

20

2

You can also run it on a online IDEhttps://ide.geeksforgeeks.org/XcOKzTd4Ik
If you have any doubt you can contact me or comment it below! Your comments and feedbacks are also welcomed!! Cheers!!

Related Links: Jumble with Numbers

14 comments:

  1. one test case is being timed out

    ReplyDelete
    Replies
    1. can you pls say which one is that? let me check!

      Delete
  2. It Will always time out for n greater than 1000

    ReplyDelete
  3. It's wrong, if I enter the value of 70 gives me 7, if income 80 gives me 8 and with 100 gives me 6. I'll leave the code in Python if you're interested.


    def esPrimo(num): #Funcion que determina si es primo
    if num < 2: return False
    for i in range (2, num):
    if num % i == 0: return False
    return True

    n = int(input()) #NĂºmero ingresado por el usuario

    primos = [i for i in range(1, n) if esPrimo(i)]
    cont = 0
    for i in range(len(primos)):
    suma = sum(primos[:i+2])
    if esPrimo(suma) and suma < n:
    cont += 1
    print(cont)

    ReplyDelete
  4. package Second;
    import java.util.*;

    public class Second{

    public static void main(String[] args) {

    int n;
    Scanner in = new Scanner(System.in);
    n = in.nextInt();
    int[] a = new int[n];
    int index = 0,count = 0,sum=0;
    for(int i=2; i<=n; i++) {
    if(i==2||i==3) {
    //System.out.println(i);
    a[index] = i;
    index++;
    }else if(i%2==0||i%3==0) {
    continue;
    }else {
    //System.out.println(i);
    a[index] = i;
    index++;
    }
    }
    //sum = 5;
    for(int i=0; i=5&&sum<n) {
    //System.out.println(sum);
    count++;
    }
    }

    }if(sum<n) {sum=0;}
    else {break;}

    }

    System.out.println(count/3);


    }


    }

    ReplyDelete
  5. Is the same program available for python?

    ReplyDelete

  6. k = []
    sum = 2
    for i in range(2,100):
    if i%2!=0:
    sum=sum+i
    if sum%2!=0:
    if sum<=100:
    k.append(sum)

    print(k)

    ReplyDelete
  7. Can you explain the logic

    ReplyDelete
  8. since the constarints are 2<N<12000000000000 some test cases results in Timelimit errors

    ReplyDelete
  9. Can someone give the optimized code which can even work for n=12000000000 plzz

    ReplyDelete
  10. well the above code doesn't work for value 10,6 and also takes more time to compile so I coded a new code which is much better than this one



    #include

    int main()
    {
    int a,i,j,k=0,count1=0,count2=0,count3=0;
    int arr[30],ar[30],sum=0;
    scanf("%d",&a);
    for(j=2;j<=a;j++)
    {

    for(i=2;i<=j;i++)
    {
    if(j%i==0)
    {
    count1++;
    }
    }
    if(count1==1)
    {
    arr[k]=j;
    k++;
    }
    count1=0;
    }
    for(i=0;i<k;i++)
    {
    sum=sum+arr[i];

    ar[i]=sum;
    }
    for(i=1;i<k;i++)
    {
    for(j=2;j<=a;j++)
    {
    if(ar[i]%j==0)
    {
    if(ar[i]<=a)
    {
    count2++;}
    }
    }
    if(count2==1)
    {
    count3++;
    }
    count2=0;
    }
    printf("%d",count3);
    }

    ReplyDelete

Super Market Problem | TCS Code Vita 2023 - Zone 1 | Super Market TCS Code Vita 2023 Solution | Code Vita 2023 | Code Vita 2023 season 11 solution

 Problem Description: In a Super market we will find many variations of the same product. In the same way we can find many types of rice bag...