计算素数C++的循环误差可视化
visual for loop error calculating prime numbers C++
我正在努力学习如何编写代码,但我在努力了解我的代码有什么问题的同时也在苦苦挣扎。我正在使用C++中的Visual studio 2013进行编程。
问题:编写一个程序,读取用户的数字N,然后确定前N个素数。素数是一个只有两个除数的数,一个除数和它自己。
我的代码没有打印出一系列素数,而是重复了一些素数。
#include <iostream>
using namespace std;
// this program will calculate the first N primes
int main(){
int N;
cin >> N;
for (int i = 2; i < N; i++){
for (int j = 2; j < N; j++){
if (i%j == 0){
break;
}
else
cout << i << " " << "is a prime numbern";
}
}
}
每当j
不划分i
时,您就打印出i
是素数。您应该等到检查了所有可能的除数。我不会给你应该做什么的答案,但它应该包括修改你的代码的这一部分:
if (i%j == 0){
break;
}
else
cout << i << " " << "is a prime numbern";
}
代码中的错误:
- 在说出它的素数之前,你必须检查所有可能的值。因此,您需要使用一个标志来确定循环中是否有任何值除以i
- 您必须继续第二个循环,直到
i
而不是N
优化
-
它只需要检查到
sqrt(Number)
来检查它是否素数,而不需要检查到数字-1。#include <iostream> using namespace std; // this program will calculate the first N primes int main(){ int N; cin >> N; for (int i = 2; i < N; i++){ int f=0; for (int j = 2; j*j <= (i); j++){ if (i%j == 0){ f=1; break; } } if(!f) Cout<<i<<"is prime"<<endl; } }
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 为什么在浮点中从大到小会引入更多的误差
- while循环中while循环的时间复杂度是多少
- 基于相邻元素 c++ 的分段误差范围的循环
- 符号和未签名整数表达式之间的比较,以进行循环误差
- 臂组件:循环只会迭代一次,然后较低误差
- C 误差在DO-while循环中具有输入验证
- 循环函数给出"return’ with a value, in function returning void"误差
- 计算素数C++的循环误差可视化