问题:0≤a≦b≤100000,a和b都是100的整数倍,将[a,b)划分为若干个大小为100的区间[x,x+100),输入a,b,输出每个区间内素数的数目。如:输入:0 200,输出:25 21。
注:(感觉是题目的问题,毕竟a可以等于b还用大小括号?)
我写成这样了:
#include <stdio.h>
int ff(int x){int j,i,p=0;
for(j=1;j<x;j++){
if(x%j==0) p++;}
if(x==0||x==1) p=3;
if(p<2)
return 1;
else return 0;
} int main(){
int j=0,k,i=0,n=0,d[999],a,b,p;
scanf("%d %d",&a,&b);
if(a==b) printf("%d",ff(a));
for(k=a;k<b;k=k+100){p=0;
for(i=k;i<(k+100);i++){
if(ff(i)) p++;
}
d[j]=p;j++;
}for(i=0;i<j;i++)
printf("%d ",d[i]);
return 0;
}****
结果时间超限了!用了2000多ms。
我的疑问:是因为像100000这样的数运行太浪费时间了吗?又该如何改正?