找到两个数字之间的质数...为什么我的代码不起作用?

时间:2019-01-09 18:06:52

标签: c

生成两个给定数字之间的所有素数。

输入

输入以一行中的测试用例数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;
}

1 个答案:

答案 0 :(得分:0)

  

为什么我的代码不起作用?

输入不循环

第一个输入是2,表示2个子测试。 OP的代码不读取该代码即可执行循环

不需要的'\n'

"\n"中的

scanf("%d %d\n",&m,&l);阻止函数返回,直到在输入后检测到非空白为止。

prime()失败

prime(1)错误地返回1。

相关问题