在VC6中运行正确,在ACM中为什么会出现编译错误
题目是:素数个数Acceteped:125Submit:1147TimeLimit:1000MSMemoryLimit:65536KBDescription给定两个非负整...
题目是:素数个数
Acceteped : 125 Submit : 1147
Time Limit : 1000 MS Memory Limit : 65536 KB
Description
给定两个非负整数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<cmath>
#include<iostream>
using namespace std;
#define N 1000000
bool arrBool[N];
sushu(int n)
{
int i,j,t=0;
memset(arrBool,true,sizeof(arrBool));
arrBool[0]=arrBool[1]=false;
for(i=2;i<sqrt(n);i++)
{ if(arrBool[i])
{
for(j=i*i;j<=n;j+=i)
arrBool[j]=false;
}
}
for(i=1;i<n;i++)
{
if(arrBool[i])
t++;
}
return t;
t=0;
}
int main()
{
int n,m,t;
cin>>t;
while((cin>>n>>m)&&t!=0&&n>=0&&m>=0)
{ if(m>n)
cout<<(sushu(m+1)-sushu(n))<<endl;
else
cout<<(sushu(n+1)-sushu(m))<<endl;
t--;
}
return 0;
} 展开
Acceteped : 125 Submit : 1147
Time Limit : 1000 MS Memory Limit : 65536 KB
Description
给定两个非负整数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<cmath>
#include<iostream>
using namespace std;
#define N 1000000
bool arrBool[N];
sushu(int n)
{
int i,j,t=0;
memset(arrBool,true,sizeof(arrBool));
arrBool[0]=arrBool[1]=false;
for(i=2;i<sqrt(n);i++)
{ if(arrBool[i])
{
for(j=i*i;j<=n;j+=i)
arrBool[j]=false;
}
}
for(i=1;i<n;i++)
{
if(arrBool[i])
t++;
}
return t;
t=0;
}
int main()
{
int n,m,t;
cin>>t;
while((cin>>n>>m)&&t!=0&&n>=0&&m>=0)
{ if(m>n)
cout<<(sushu(m+1)-sushu(n))<<endl;
else
cout<<(sushu(n+1)-sushu(m))<<endl;
t--;
}
return 0;
} 展开
3个回答
展开全部
你要检查你的编译器里面有没有包括这样的函数库或者头文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int sushu(int n)
试试
试试
追问
不行
追答
有可能是memset()函数不支持,你试下for循环赋值,如果不行把题目的链接发给我
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2 3这两个数之间有素数?
追问
是闭区间,2和3也包括在内
追答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询