用最高的效率使用筛选法,用2到根n的所有素数去检测最大素数

来源:百度知道 编辑:UC知道 时间:2024/05/25 08:25:54
求一C程序。

源程序如下:
#include <math.h>
main()
{
float n,max=2;
int t,i,k;
printf("enter n;\n");
scanf("%f",&n);
for (i=2;i<=sqrt(n);i++)
{
t=1;
for (k=2;k<i;k++)
{
if (i%k==0)
{
t=0;
break;
}
}
if (t)
{
if (i>max)
max=i;
}
}
printf("2~%f max soso is : %f\n",n,max);
}
另外如果要更高效一些可以使用函数调用:
最高效的源程序如下:
#include <math.h>
float ss(int i)
{
int k;
for (k=2;k<i;k++)
if (i%k==0)
return 0;
return 1;
}
main()
{
int i;
float max=2;
float n;
clrscr();
printf("enter n;\n");
scanf("%f",&n);
for (i=2;i<=sqrt(n);i++)
if (ss(i))
{
if (i>max)
max=i;
}
printf("2~%f max soso is : %f\n",n,max);
}注意21不是素数,因为它能被3 OR 7整除