![](/img/trans.png)
[英]How to eliminate the extra asterisk shown from the prime factorization output?
[英]How to print the middle asterisk shown from the prime factorization output by setting an end condition?
以下代碼從用戶輸入一個 integer (n) 並輸出 n 的素數分解。 我正在嘗試為這部分代碼的 output 設置“結束”條件,但我不能:
if(countA == 1)
cout<<2;
else if(countA != 0)
cout<<2<<"^"<<countA;
正確 output 的示例是:
輸入: 100
Output: 2^2*5^2
但它現在打印的是沒有中間星號(2 到 5 之間):
2^25^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, end = sqrt(n); i <= end; i = i + 2)
{
while(n % i == 0)
{
n /= i;
countB++;
}
if(countB == 1)
cout<<i<<"*";
else if(countB != 0)
{
cout<<i<<"^"<< countB;
if(!(i + 1 >= end))
cout<<"*";
}
}
if(n > 2)
cout<<n;
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
const char *pad = "";
int main()
{
int n, countA = 0, countB = 0;
cin>>n;
while(n % 2 == 0)
{
n /= 2;
countA++;
}
if(countA > 0)
{
cout<<pad;
cout<<2;
if(countA > 1)
{
cout<<"^"<<countA;
}
pad = "*";
}
for(int i = 3; i <= sqrt(n); i = i + 2)
{
countB = 0;
while(n % i == 0)
{
n /= i;
countB++;
}
if(countB > 0)
{
cout<<pad;
cout<<i;
if(countB > 1)
{
cout<<"^"<<countB;
}
pad = "*";
}
}
if(n > 2)
{
cout<<pad;
cout<<n;
pad = "*";
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.