计算C++中的素数
Counting prime numbers in C++
如何计算所有"素数"而不是显示它们?
示例:
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;
}
重新格式化代码:
#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;
虽然这看起来确实像你的家庭作业,但我希望你能从中学到一些东西。
试试这个,
#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;
}
简单,只需增加计数器而不是打印值。使用方程N/(log(N)-1),也可以得到一个相当不错的欧拉瞬变函数的近似。。。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 计算缩放多边形的比例,得到给定的多边形面积
- 在C++中如何在没有pow的情况下进行基础计算
- 计算平均值,不包括上次得分
- 如何计算多映射中重复对的数量