c++ - 如何消除素数分解输出中显示的额外星号?
问题描述
以下代码从用户输入一个整数 (n) 并输出 n 的素数分解。我需要有以下输出(例如),但无法达到:
输入:98
输出:2*7^2
实际的错误输出,有一个额外的“*”是:
2*7^2*
^
也许还有另一种使用函数的解决方案,我不知道。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, countA = 0, countB = 0;
cin>>n;
while(n % 2 == 0)
{
n /= 2;
countA++;
}
if(countA == 1)
cout<<2<<"*";
else if(countA != 0)
cout<<2<<"^"<<countA;
for(int i = 3; i <= sqrt(n); i = i + 2)
{
while(n % i == 0)
{
n /= i;
countB++;
}
if(countB == 1)
cout<<i<<"*";
else if(countB != 0)
cout<<i<<"^"<<countB<<"*";
}
if(n > 2)
cout<<n;
return 0;
}
解决方案
而不是无条件地打印它:
cout<<i<<"^"<<countB<<"*";
你可以测试它是否是最后一个数字。示例(适用于任何需要的地方):
for(int i = 3, end = sqrt(n); i <= end; i = i + 2) {
// ...
cout << i << '^' << countB;
if(i + 2 <= end) cout << '*';
推荐阅读
- arrays - 如何在 C 中正确平均这些数字?
- python - 每天使用 gitpython 提交是否违反 GitHub TOS
- javascript - 一个仍在网站上反映的恶意链接
- vue.js - 为什么 v-text 不能显示字符串
- javascript - 如何在 django 中将输入标签与表单字段连接起来
- nlp - 对话式 AI 的 BERT 微调
- javascript - 使用 Svelte 从 Javascript 中的 GraphQL 查询访问数据时出现问题
- java - 多模块 JHipster 应用
- c++ - 随机数生成器在 C++ 中不起作用
- import - 如何将没有日期列的 csv 文件导入 dolphindb?