如何计算循环执行的次数,我的代码无法正常工作,
在用户输入n号之前找到素数,并显示它们并计算多少
数字总计
离。 数字输入让我们说7,
并且在7之前有3个数字
所以它显示2,3,5,7并且在7之前有3个素数
#include <iostream>
using namespace std;
int main()
{
int n, i, k;
int counter = 0;
bool isprime;
cout << "Enter a positive integer n: ";
cin >> n;
for(int k = 2; k <= n; k++)
{
isprime = true;
for(int i = 2; i <= k - 1; i++)
if(k%i == 0)
{
isprime = false;
}
if(isprime)
cout << k << "\t";}
cout << "\nThere are " << counter << " primes less than " << n;
return 0;
}
答案 0 :(得分:0)
在您的示例中,计数器永远不会从其初始值进行修改。尝试计算你想要的数量。
补充:...... BTW。喜欢
for (i = 0; i < n; ++i)
用于循环。 “i&lt; n”更惯用(更容易阅读),而且我通常比i ++更有效率。
答案 1 :(得分:0)
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int num;
int count = 0;
cout << "Enter your range: ";
cin >> num;
for(int i = 1; i <= num; i++)
{
count = 0;
for(int j = 2; j <= sqrt(i); j++)
{
if(i % j == 0)
{
count++;
break;
}
}
if(count == 0 && i != 1)
cout << i << " ";
}
cout << endl;
}
每次有素数时,这将增加计数变量。
答案 2 :(得分:-1)
#include <iostream>
using namespace std;
int main()
{
int n, i, k;
int counter = 0;
bool isprime;
cout << "Enter a positive integer n: ";
cin >> n;
for(int k = 2; k <= n; k++)
{
isprime = true;
for(int i = 2; i <= k - 1; i++)
if(k%i == 0)
{
isprime = false;
}
if(isprime)
{
cout << k << "\t";
counter++;
}
}
cout << "\nThere are " << counter - 1<< " primes less than " << n;
return 0;
}
答案 3 :(得分:-1)
如上所述,counter
不会增加。
你应该做一个功能
isPrime?(int n)
{
int sqrt_n = sqrt(n)
for(int i = 2; i <= sqrt_n; i++){ //You could check only to sqrt(n)
if(n%i == 0)
{
return false;
}
}
return true;
}
然后你可以使用以下功能:
int main()
{
int n, i, k;
int counter = 0;
cout << "Enter a positive integer n: ";
cin >> n;
for(int k = 2; k <= n; k++)
{
if(isPrime?(k)) {
counter++;
cout << k << "\t";
}
cout << "\nThere are " << counter << " primes less than " << n;
return 0;
}