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);
}
}
}
}