我一直在尝试解决质数生成器算法的 SPOJ 问题。

这是问题



这很容易,但是在线法官显示错误,我不明白“测试用例”的问题是什么意思以及为什么需要使用 1000000 范围。

这是我的代码。

#include<stdio.h>

main()
{
int i, num1, num2, j;
int div = 0;
scanf("%d %d", &num1, &num2);
for(i=num1; i<=num2; i++)
  {
    for(j=1; j<=i; j++)
    {
      if(i%j == 0)
      {
        div++;
      }
    }
    if(div == 2)
    {
     printf("%d\n", i);
    }
    div = 0;
  }
  return 0;
}

最佳答案

我无法评论算法以及 100000 数字范围是否允许优化,但您的代码无效的原因是它似乎没有正确解析输入。输入将类似于:

2
123123123 123173123
987654321 987653321

那是第一行将给出每行将获得的输入组数,然后是一组输入。乍一看,您的程序似乎只是在读取第一行以查找两个数字。

我认为在线法官只是在寻找正确的输出(可能还有合理的运行时间?)所以如果你纠正了正确的输入,那么无论你的算法效率低下,它都应该工作(正如其他人已经开始评论)。

关于c - 素数生成器算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20744025/

10-12 12:20
查看更多