我想在fortran中创建一个程序,列出用户给出的范围n1到n2中的所有双素数对。我这样做了,但它没有用,我也不知道如何修复它:
value
如果我将范围1到10,它会打印几对8和10。
答案 0 :(得分:1)
如何修复它是通过"调试器" (无论是真实的还是你的头),看看每个步骤后的变量和效果。
然而(尽管我的Fortran有点生疏),你似乎选择了一种特别低效的算法,它选择了许多素数对(在nexted循环中),然后评估它们的差异是否为2。
使用类似的东西会更简单:
for num = lower to upper - 2:
if num is prime and (num + 2) is prime:
output num, num + 2
答案 1 :(得分:0)
不是一个完整的答案,因为这是作业,但一种可能的方法是筛选素数的整个范围,然后搜索成对。另一个(较慢,但可能更简单,使用更少的内存)是对每个奇数进行试验,并记住最后一个奇数是否为素数。