Ŀ                                                 Ŀ
 PrimeNumbers.cpp                                                   prime_numbers.cpp 
                                                 

#include <stdio.h>                                                   #include <stdio.h>
#include <stdlib.h>                                                  #include <stdlib.h>
#include <functional>                                                #include <functional>
#include <typeinfo>                                                  #include <typeinfo>

#define WR /*WR*/                                                    #define WR /*WR*/
#define RC /*RC*/                                                    #define RC /*RC*/

#define export using                                                 #define export using
#define sealed /*sealed*/                                            #define sealed /*sealed*/

#define with std::function                                           #define with std::function
typedef void * PSTRUCT;                                              typedef void * pstruct;

#define size_of(x) ( sizeof (x) )                                    #define size_of(x) ( sizeof (x) )
#define array_size(x) ( sizeof (x) )                                 #define array_size(x) ( sizeof (x) )

#define t_id(x) ( typeid (x).hash_code () )                          #define t_id(x) ( typeid (x).hash_code () )
#define t_name(x) ( typeid (x).name () )                             #define t_name(x) ( typeid (x).name () )

typedef unsigned char BYTE;                                          typedef unsigned char byte;
typedef unsigned long ULONG;                                         typedef unsigned long ulong;
typedef char * PCHAR;                                                typedef char * pchar;
typedef char CHAR;
typedef void VOID;
typedef int INT;

#define Main main

/* * */                                                              /* * */

sealed namespace Numbers                                             sealed namespace numbers
{                                                                    {
  BYTE IsPrime (INT N)                                                 byte is_prime (int n)
  {                                                                    {
    BYTE WR Is_prime = 1;                                                byte WR is_prime = 1;

    for (INT Number = 2; Number < N; Number ++)                          for (int number = 2; number < n; number ++)
    {                                                                    {
      if (N % Number == 0)                                                 if (n % number == 0)
      {                                                                    {
        Is_prime = 0; break;                                                 is_prime = 0; break;
      }                                                                    }
    }                                                                    }

    return Is_prime;                                                     return is_prime;
  }                                                                    }

  VOID PrimeNumbers (INT N, with <VOID (INT)> ReportPrime)             void prime_numbers (int n, with <void (int)> report_prime)
  {                                                                    {
    for (INT Number = 0; Number < N; Number ++)                          for (int number = 0; number < n; number ++)
    {                                                                    {
      if (IsPrime (Number))                                                if (is_prime (number))
      {                                                                    {
        ReportPrime (Number);                                                report_prime (number);
      }                                                                    }
    }                                                                    }
  }                                                                    }
}                                                                    }

export Numbers::PrimeNumbers;                                        export numbers::prime_numbers;


                                                                     
                                                                     
                                                                     


INT Main (INT Arg_c, PCHAR Arg_v[])                                  int main (int arg_c, pchar arg_v[])
{                                                                    {
  if (Arg_c != 2)                                                      if (arg_c != 2)
  {                                                                    {
    printf ("Usage: %s%s\n", Arg_v[0], " N");                            printf ("Usage: %s%s\n", arg_v[0], " N");
  }                                                                    }
  else                                                                 else
  {                                                                    {
    printf ("== Prime Numbers ==\n");                                    printf ("== Prime Numbers ==\n");

    PrimeNumbers (strtod (Arg_v[1], NULL), [] (INT N) {                  prime_numbers (strtod (arg_v[1], NULL), [] (int n) {
      printf ("%d\n", N);                                                  printf ("%d\n", n);
    });                                                                  });
  }                                                                    }

  return 0;                                                            return 0;
}                                                                    }
