如何计算所有“素数”而不是显示它们?
示例:
cout << "there are 125 prime numbers";
我正在使用数字1000,因为我想知道它有多少素数。
我不想显示找到的素数,但我想知道找到了多少素数。
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>
#include <math.h>
#include <stdio.h>
using namespace std;
int main()
{
for (int a=2 ; a < 1000 ; a++)
{
bool prime = true;
for(int c=2 ; c*c <= a ; c++)
{
if(a % c == 0)
{
prime = false;
break;
}
}
if(prime) cout << a << " ";
}
return 0;
}
答案 0 :(得分:2)
重新格式化代码:
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>
#include <math.h>
#include <stdio.h>
using namespace std;
int main() {
for (int a = 2; a < 1000; a++) {
bool prime = true;
for (int c = 2; c*c <= a; c++) {
if(a % c == 0) {
prime = false;
break;
}
}
if(prime) cout << a << " ";
}
return 0;
}
不是每次通过循环打印出来,而是每次数字为素数时都需要设置一个变量来计算。首先在外部for循环外添加一个变量:
int main() {
int num_primes = 0;
for (int a = 2; a < 1000; a++) {
接下来,只要数字为素数而不是打印,只需递增计数器:
if(prime) {
num_primes += 1;
}
最后,在从main()返回之前,打印出素数:
cout << num_primes << endl;
return 0;
虽然这绝对看起来像你的作业,但我希望你从中学到一些东西。
答案 1 :(得分:0)
简单,只需增加一个计数器而不是打印该值。您还可以使用等式N /(log(N)-1)获得相当不错的欧拉函数逼近...
答案 2 :(得分:0)
试试这个,
#include < iostream>
#include < iomanip>
#include < string>
#include < sstream>
#include < fstream>
#include < math.h>
#include < stdio.h>
using namespace std;
int main()
{
int count=0;
for (int a=2 ; a < 1000 ; a++)
{
bool prime = true;
for (int c=2 ; c*c <= a ; c++)
{
if(a % c == 0)
{
prime = false;
break;
}
}
if(prime) count++;
}
cout <<"No of prime numbers : "<< count;
return 0;
}