Hi everyone,

Its my first post, and by the way its my first semester studying C language. And it's the first programming experience.

I was asked to write a program that , for each even number between 700 and 1100 , it lists its equivalent value as a sum of primes (assuming godbach was right so far!! lol ) ..the thing is that i couldn't do it using ordinary loops. so i used an array in which i have stored the primes i want to process.

For that said, Can anyone tell me why the output of my program outputs only relatively bigger primes as operands for the sum. I mean it's correct but why it skip situations in which small prime numbers can be used like 3.

700 = 419 + 281 ya right but why not 700 = 23 + 677 .

here is my code

Code:#include <stdio.h> #include <stdlib.h> #include <math.h> #define start 700 #define finish 1100 int is_prime(int); int check(int); int main(){ for(int i = start ; i <= finish ; i += 2){ check(i); } system("PAUSE"); return(0); } int is_prime(int n){ for(int i = 2 ; i <= sqrt(n) ; i++){ if(!(n%i)) return(0); } return(1); } int check(int x){ int k[x]; int j = 0; for (int i = 1 ; i < x ; i += 2){ if (is_prime(i)){ k[j] = i; j++; } } for (int n = 0 ; n < j ; n++){ for (int a = 0 ; a <= j/2 ;a++){ if (x == k[n]+k[a]){ printf("%d = %d + %d\n",x,k[n],k[a]); return (0); } } } }