Euler problem 50

Vishal Sharma

Vishal Sharma

@vishal-pysGmK Oct 16, 2024
I was trying to solve the Euler problem number 50, and wrote the following code and got the answer as,
no. of primes = 536
and prime value is 958577
But, when i search the answer for this on internet, it says 543 primes and prime is 997651
why does my program ends even if the sum is not > than 1000000 ???


    #include<stdio.h>
    #include<stdlib.h>
    void prime(); // generates prime
    int send_prime(long int); // used to send the generated prime
    int check_prime(long int); // checks whether obtained sum is prime or not
    long int sum = 0;
    long int p = 0; // count of primes
    int main()
    {
    prime();
    return 0;
    }
    void prime() {
    int count = 0;
    for(long int i = 2 ; i <= 1000000 ; i++) {
    count = 0;
    for(long int j = 2 ; j <= (i/2) ; j++) {
    if(i%j == 0) {
    count++;
    break;
    }
    }
    if(count == 0) {
    p++; // number of prime incremented
    int check = send_prime(i);
    if(check == 0) // to check is sum goes beyond 1 million
    break;
    }
    }
    }
    int send_prime(long int x) {
    sum = sum + x;
    if(sum > 1000000)
    return 0;
    int u = check_prime(sum);
    if(u == 1 && sum < 1000000) {
    printf("\nnumber of terms = %d\n",p);
    printf("\n%d\n",sum);
    return 1;
    }
    else
    return 1;
    }
    int check_prime(long int x) {
    int count = 0;
    for(long int i = 2 ; i <= x/2 ; i++) {
    if(x%i == 0) {
    count++;
    break;
    }
    }
    if(count == 0)
    return 1;
    else
    return 0;
    }

Welcome, guest

Join CrazyEngineers to reply, ask questions, and participate in conversations.

CrazyEngineers powered by Jatra Community Platform