简介
删除法求素数(质数):
素数:只能被1和本身整除的数
删除:将1000以内是2的倍数的数去掉,是3的倍数的数去掉。。。。
要求
求1000以内的素数
代码实现
/*删除法求素数*/
#include <stdio.h>
/*函数声明*/
void prime_del(int arr[]);
void my_printf(int arr[]);
/*全局变量*/
static int n = 1001; //数组元素个数
int main()
{
int arr[1001] = {0}; //数组下标值刚好对应1000以内的数。。。
prime_del(arr);
my_printf(arr); //打印1000以内的素数
return 0;
}
/*函数定义*/
void prime_del(int arr[])
{
int i,j;
for(i=2;i<n;i++) //从最小的素数2开始
{
if(arr[i]==0) //一开始数组的元素全为0
{
for(j=2*i;j<n;j+=i) //删除倍数值,j 每次循环后+i;
{
arr[j] = -1; //用-1表示删除;0表示保留,直到最后表示该位置是素数
}
}
}
}
void my_printf(int arr[])
{
int i;
for(i=2;i<n;i++)
{
if(arr[i]==0)
{
printf("%d ",i); //打印下标值
}
}
printf("\n");
}