求素数的个数,出现未输入就退出程序的问题,求指点。谢谢~
我猜想是由于数组初始化时,a的值也是未知的才导致了这样的情况,但我的思路就是把输入的a作为第一个判断的数,不知道该怎么解决,请各位指点~不盛感激给定两个非负整数a,b,其中0<= a,b<=1,000,000,请计算这两个数之间有多少个素数。
输入
第一行是一个整数K(1<=K<=1000),表示有多少个样例,每个样例占一行,是两个整数a和b,每个整数之间用一个空格隔开。
输出
每行输出一个样例的结果。
Sample Input
2
2 3
17 19
Sample Output
2
2
我想用筛法做:
#include <stdio.h>
#include <math.h>
int main()
{
int K,a,b,i,j;//k是案例个数,a 和 b为区间的端点值(a,b)
int num = 0;
scanf("%d",&K);
while(K--)
{
scanf("%d %d",&a,&b);//输入a和b的值
int c[1000001];
//用筛法把非素数都赋值成0.
scanf("%d %d",&a,&b);
for(i=a; i<=b; i++)//对数组进行初始化
{
c[i] = i;
}
for(i=a; i<=((int)sqrt(b)); i++)//进行筛选
{
for(j=i+1; j<=b; j++)
{
if(c[i]!=0 && c[j]!=0 && c[j]%c[i]==0)
{
c[j]=0;
}
}
}
for(i=a; i<=b; i++)
{
if(c[i]!=0)
{
num++;
}
}
printf("%d\n",num);
}
return 0;
}
编译可以,但是一运行windows就显示出现了一个问题,导致程序停止正常工作。
关闭windows窗口后
小黑框显示Process exited with return value 3221225725
Press any key to continue...