生成两个给定数字之间的所有素数。
输入
输入以一行中的测试用例数t(t <= 10)开始。在接下来的t行中的每行中,都有两个数字m和n(1 <= m <= n <= 1000000000,n-m <= 100000),以空格隔开。
输出
对于每个测试用例,请打印所有素数p,以使m <= p <= n,每行一个数字,测试用例用空行分隔。
Input:
2
1 10
3 5
Output:
2
3
5
7
3
5
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX_SIZE 1000000000
int prime(int n){
int j;
for (j=2;j<=n/2;j++)
if((n%j)==0)
return 0;
return 1;
}
int main(){
int i,p;
int m,l;
scanf("%d %d\n",&m,&l);
for (i=m;i<=l;i++){
p=prime(i);
if(p==1){
printf("%d \n",i);
}
}
return 0;
}
答案 0 :(得分:0)
为什么我的代码不起作用?
输入不循环
第一个输入是2
,表示2个子测试。 OP的代码不读取该代码即可执行循环
不需要的'\n'
"\n"
中的 scanf("%d %d\n",&m,&l);
阻止函数返回,直到在输入后检测到非空白为止。
prime()失败
prime(1)
错误地返回1。