我一直在尝试解决质数生成器算法的 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/