[英]How to count how many times a loop has been executed? c++
如何計算執行循環的次數我的代碼不符合我的預期,
在用戶輸入的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;
}
在您的示例中,計數器永遠不會從其初始值修改。 嘗試讓它計算您要計算的數量。
補充:...順便說一句。 更喜歡
for (i = 0; i < n; ++i)
用於循環。 “ i <n”更慣用(更易於閱讀),而++ i通常比i ++更有效。
#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;
}
每當有質數時,這都會增加count變量。
#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;
}
如上所述, 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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.