湘潭大学oj 1098
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
Source
ericxie
我的
#include<stdio.h>
int main()
{
int a, b;
int n, K = 0;
scanf_s("%d", &K);
for (n = 0; n < K; n++)
{
scanf_s("%d %d", &a, &b);
int i, cot = 0;
for (i = a; i <= b; i++)
{
if (i == 2 || i == 3 || i == 5 || i == 7)
cot++;
else if (i%2!=0&&i % 3 != 0 && i % 5 != 0 && i % 7 != 0&&i>10)
{
cot++;
}
}
printf("%d\n", cot);
}
return 0;
}
我的思路是这样的:特殊对待一位数的质数用,高位数的奇数且不能被357整除的就是质数。
我试了十几例数都没有问题,但网站给我报Wrong Answer。
我想知道我错在哪了
ps:代码给我显示正文错误提交不了,所以截了下图
供参考:https://blog.csdn.net/weixin_43966538/article/details/106255569
你的输出和例题的输出不一样。可能时这个原因给你报错
我的
#include<stdio.h>
int main()
{
int a, b;
int n, K = 0;
scanf_s("%d", &K);
for (n = 0; n < K; n++)
{
scanf_s("%d %d", &a, &b);
int i, cot = 0;
for (i = a; i <= b; i++)
{
if (i == 2 || i == 3 || i == 5 || i == 7)
cot++;
else if (i%2!=0&&i % 3 != 0 && i % 5 != 0 && i % 7 != 0&&i>10)
{
cot++;
}
}
printf("%d\n", cot);
}
return 0;
}