谁有更好的方法 (求两个数间的素数)【在OJ上总是运行时间超限】
#include<stdio.h>int main()
{
int a,b,i,j,value;
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
{
value=1;
for(j=2;j<i;j++)
{
if(i%j==0)
{
value=0;
break;
}
}
if(value==1)
{
printf("%d\n",i);
}
}
return 0;
}
#include <stdio.h> #include <stdlib.h> #include <math.h> typedef unsigned long long ULL; int main(void) { ULL *num = NULL, i, j, k, l, t; if(scanf("%lld%lld", &i, &j) != 2 || i < 2 || i > j) return 1; l = j - i + 1; if(!(num = malloc(l * sizeof(ULL)))) return 1; for(k = 0; k < l; k++) num[k] = k + i; for(i = 0; i < l; i++) { if(num[i]) for(t = sqrt(num[i]), j = 2; j <= t; j++) if(num[i] && num[i] % j == 0) for(k = 0; i + j * k < l; k++) num[i + j * k] = 0; if(num[i]) printf("%llu ", num[i]); } free(num); return 0; }