简述
除去错误答案,留下正解
实现案例
素数筛选
叙述
筛法又称筛选法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
代码
#include<stdlib.h>
int main()
{
long long int big,small=2,i,j,m;
int*n;
scanf("%lld",&m);
n=(int*)malloc(m*sizeof(int));
for(i=1;i<m;i++)
n[i]=1;
for(i=2;i<=m;i++)
{
if(n[i-1]==1)
{
for(j=i+1;j<=m;j++)
{
if(j%i==0)
n[j-1]=0;
}
}
}
for(i=3;i<=m;i++)
{
if(n[i-1]==1)
{
big=i;
if(big-small==2)
printf("(%lld,%lld) ",small,big);
small=big;
}
}
return 0;
}
知识点
1.标记数组:下标为处理的数据,元素值用来标记数据是否为目标数据
2.筛选法:通过数据正误的递归关系,去除错误数据
遗留问题
筛选法在其他方面的应用