#include<stdio.h>
#include<math.h>
int ssb(int x,int y);
int main( )
{
int m,n;
scanf("%d %d",&m,&n);
ssb(m,n);
return 0;
}
int ssb(int x,int y)
{
int i,j;
int d=0;
int a[y-x+1];
while(d!=y)
{
for(i=2;;i++)
{
int t=sqrt(i);
for(j=2;j<=t;j++)
{
if(i%j==0)
break;
}
if(j>t)
{
a[d]=i;
d++;
}
if(d==y)
break;
}
}
int t=0;
for(i=x-1;i<y;i++)
{
t++;
if(t%10!=0)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
}
}
你输入的m和n是什么意思? 求从第m个开始的n个素数?
很可能是你的int a[y-x+1];这个数组不够大,改成int a[y+x+1];或者用下面的代码试试吧:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int ssb(int x,int y);
int main( )
{
int m,n;
scanf("%d %d",&m,&n);
ssb(m,n);
return 0;
}
int ssb(int x,int y)
{
int i,j;
int d=0;
int* a= (int*)malloc(sizeof(int)*(y+x+1));
for(i=2;;i++)
{
int t=sqrt((double)i);
for(j=2;j<=t;j++)
{
if(i%j==0)
break;
}
if(j>t)
{
a[d]=i;
d++;
}
if(d==y)
break;
}
int t=0;
for(i=x-1;i<y;i++)
{
t++;
if(t%10!=0)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
}
free(a);
a=0;
return 0;
}