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]);