谁有更好的方法 (求两个数间的素数)【在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;
}
2015-03-24 14:26
程序代码:
#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;
}

2015-03-24 15:02
2015-03-24 15:08
程序代码:# include <stdio.h>
int main(void)
{
int a=2,b=100; //区间
int i,j;
for (i=a;i<=b;i++)
{
for(j=2;j*j<=i;j++)
if(i%j==0)
break;
if(j*j>i)
printf("%d ",i);
}
return 0;
}

2015-03-24 15:24