如何防止循环中的最后计数被执行
How to prevent a final cout in a loop from being executed?
我想写一个代码,给出给定整数的质因数分解。下面是我的代码:
#include <iostream>
#include <cmath>
using namespace std;
void primefactor(int a);
int main()
{
int n;
cout<<" Enter the value of n "<<endl;
cin>>n;
primefactor(n);
return 0;
}
void primefactor(int a){
while(a%2==0){
cout<<"2*";
a/=2;
for(int i=3; i<=sqrt(a); i+=2){
while(a%i==0){
cout<<i<<"*";
a=a/i;
}
}
if(a>2){
cout<<a<<endl;
}
}
然而,当我在最后一个因子上运行输出时,我得到了一个额外的*因子分解。我怎样才能去掉这个?
可以使用
if (a != 2)
cout<<"2*";
else
cout<<"2";
代替cout<<"2*";
我有同样的问题,并解决了它与goto语句。
#include <iostream>
#include <math.h>
using namespace std;
void primeFactorization(int number) {
cout << number << ": ";
// WHILE number is even
while (number % 2 == 0) {
// SET number = number / 2
number = number / 2;
// PRINT 2
cout << 2 << " " ;
// END WHILE
}
// GOTO TERMINAL
reloop:
// FOR factor in 3 to the sqrt(number), by 2
for (int factor = 3; factor <= sqrt(number); factor = factor + 2) {
// IF number modular factor equals 0 THEN
if (number % factor == 0) {
// PRINT factor
cout << factor << " " ;
// SET number = number / factor
number = number / factor;
// GOTO INITIAL
goto reloop;
// END IF
}
// END FOR
}
//IF number > 2 THEN
if (number > 2) {
//PRINT number
cout << number;
//END IF
}
cout << endl;
}
int main() {
int usersNumber;
bool userWants2Play = true;
while (userWants2Play) {
cout << "Please enter a number to be factored: " ;
cin >> usersNumber;
primeFactorization(usersNumber);
cout << "Do you want to play again? 1 or 0: " ;
cin >> userWants2Play;
}
return 0;
}
goto语句允许新的奇数再次通过循环。这样可以打印奇数素数因子,并且如果因子存在,则可以再次对新的旧数进行因子分解。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- lower_bound()返回最后一个元素
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 为什么我的最后一个 ELSE 条件无法正确执行
- 递归推动POP POSTFIX计算器无法正确执行操作,只需将最后一个数字作为结果
- CMake 意外地将最后一个文件名预置到可执行文件中
- C :为什么它总是首先执行最后一个参数
- 最后一行执行后的堆栈错误
- 写入数组时,最后一个线程的执行速度比第一个线程慢
- 如何使用getline执行最后一行
- 我的代码编译,执行,但程序最后崩溃
- 我正在尝试递归地实现一个程序。我只是不明白为什么我的最后一行被执行了两次
- 如何防止循环中的最后计数被执行
- 如何使用QsqlQuery获取最后准备和执行的查询