sieve.c

来自「keilc pic的版本 才搞到的 希望对大家有帮助」· C语言 代码 · 共 55 行

C
55
字号
/*  sieve.c */

int printf (char *, ...);

/* Eratosthenes Sieve Prime Number Program in C from Byte Jan 1983. */

#define TRUE 1
#define FALSE 0
#define SIZE 8190

char flags[SIZE+1];

void sieve()  {
    register int i,k;
    int prime,count,iter;

    printf("10 iterations\n");
    for (iter = 1; iter <= 10; iter++)		/* do program 10 times */
      {	
	count = 0;			/* initialize prime counter */
	for (i = 0; i <= SIZE; i++)	/* set all flags true */
	  flags[i] = TRUE;
	for (i = 0; i <= SIZE; i++)
	  {
	    if (flags[i])		/* found a prime */
	      {
		prime = i + i + 3;	/* twice index + 3 */
		for (k = i + prime; k <= SIZE; k += prime)
		  flags[k] = FALSE;	/* kill all multiples */
		count++;		/* primes found */
	      }
	  }
      }
    printf("%d primes.\n",count);		/*primes found in 10th pass */
  }


serinit ();
timerstart ();
unsigned long timerstop ();     /* States */

void main (void)  {
  unsigned long time;

#ifndef PHY161
  serinit ();
#endif
  timerstart ();
  sieve ();
  time = timerstop ();
  printf ("\nExecution Time: %ld * 400ns\n", time);  
  while (1);
}
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?