我用 C 语言编写了一个简单的程序,使用埃拉托色尼筛法查找给定范围内的所有素数。在学校,我们目前正在上课学习汇编,但我不知道如何编写三个循环。我在 NASM 中有所了解,我之前曾摆弄过,但我们必须使用 AT&T。有什么建议我可以用“void sieve()”做什么?
#include <stdio.h>
#include <stdlib.h>
void sieve(int *, int);
int main()
{
int *a, n, i;
n = 46000;
printf("Enter the range : ");
scanf("%d", &n);
a = malloc(sizeof(int)*n);
sieve(a,n);
printf("\nThe primes numbers from 1 to %d are: ", n);
for(i=2; i<=n; i++)
{
if(a[i] == 1)
printf("%d, ", i);
}
printf(".\n\n");
return 0;
}
void sieve(int *a, int n)
{
int i, j;
for(i=2; i<=n; i++)
a[i] = 1;
for(i=2; i<=n; i++)
{
if(a[i] == 1)
{
for(j=i; (i*j)<=n; j++)
a[(i*j)] = 0;
}
}
}