Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在特定区间内寻找素数_C++_Primes - Fatal编程技术网

C++ 在特定区间内寻找素数

C++ 在特定区间内寻找素数,c++,primes,C++,Primes,在特定数量的测试用例中查找特定间隔内的素数 示例如下: 输入: 输出: 2 3 5 7 3 5 注意答案之间的小空格 这是我的密码: #include <iostream> #include <cmath> void prime (int x, int y); using namespace std; int main() { int t, x[10], y[10]; cin >> t; for (int i = 0; i

在特定数量的测试用例中查找特定间隔内的素数

示例如下: 输入:

输出:

2
3
5
7

3
5
注意答案之间的小空格

这是我的密码:

#include <iostream>
#include <cmath>

void prime (int x, int y);

using namespace std;

int main()
{
    int t, x[10], y[10];
    cin >> t;

    for (int i = 0; i < t; i++)
        //for (int j = 0; j < t; j++)
        cin >> x[i] >> y[i];

    while (t > 0){
        for (int i = 0; i < t; i++)
            prime(x[i], y[i]);
        t--;
    }
}

void prime(int x, int y){
    bool prime = true;
    for (int i = x; i <= y; i++){
        for (int j = 2; j <= sqrt(i); j++){
            prime = true;
            if (i % j == 0)
                prime = false;
        }
        if (prime == true)
            cout << i << endl;
    }
    cout << endl;
}

我做错了什么?

您应该将
prime=true
移到for循环之外。您当前正在每次迭代时重置它。至于打印,你不需要它,因为还没有人指出它,如果你想知道为什么你得到的是三组输出而不是两组输出

while (t > 0){
  for (int i = 0; i < t; i++)
    prime(x[i], y[i]);
  t--;
}
while(t>0){
for(int i=0;i
用这样的措辞可能更好

for (int i = 0; i < t; i++)
  prime(x[i], y[i]);
for(int i=0;i
(外部循环为您提供了额外的输出。)

我在第一个for()循环中移动了它,它似乎解决了素数的问题,但出于某种原因,它仍然执行了3次,第一个间隔计算了两次,有什么原因吗?请使用。C代码。
while (t > 0){
  for (int i = 0; i < t; i++)
    prime(x[i], y[i]);
  t--;
}
for (int i = 0; i < t; i++)
  prime(x[i], y[i]);