Code: Select all
for(num=5,f=2;num<REMAX;num+=f,f=6-f)
Moderator: Board moderators
Code: Select all
for(num=5,f=2;num<REMAX;num+=f,f=6-f)
Code: Select all
#include <cstdio>
using namespace std;
#define MAX 100000000
#define HALF 50000000
#define SQRT 5000
#define SIZE MAX / 16 + 2
char SITO[SIZE];
#define NTH(n) ((n) & 7)
#define ISPRIME(n) SITO[n >> 4] & (1 << NTH (n >> 1))
bool isprime (int n)
{
if (n == 2) return true;
else if (!(n & 1)) return false;
else return ISPRIME (n);
}
void init (void)
{
memset (SITO, 0xff, sizeof SITO);
SITO[0] = 0xFE;
for (int i = 1; i < SQRT; i++)
if (SITO[i >> 3] & (1 << NTH (i)))
for (int j = 2 * i * (i + 1); j < HALF; j += 2 * i + 1)
SITO[j >> 3] &= ~(1 << NTH (j));
}
/*** CUTTED ***/
Code: Select all
/*** CUTTED ***/
Code: Select all
if (!(n & 2))
Code: Select all
/*** CUTTED ***/
Code: Select all
for (int i = n / 2 - 1; i >= 0; i -= 2)
Code: Select all
if (n % 2 == 1 && isprime (n - 2))
{
printf ("%d is the sum of %d and %d.\n", n, 2, n - 2);
goto end;
}
I assumed it must be odd because the even number must be of two odd numbers. Now I'm a little bit confused. I can't remember other way for finding is the number sum of two primes.i can be odd here for some even n and continues to be odd.
Code: Select all
for (int i = n / 2 - 1; i >= 0; i -= 2)
Code: Select all
if (n % 2 == 1 && isprime (n - 2))
{
printf ("%d is the sum of %d and %d.\n", n, 2, n - 2);
goto end;
}
Code: Select all
typedef struct{
signed char s:1;
}bit_field;
int main(){
bit_field sign;
return 0;
}