簡體   English   中英

如何通過設置結束條件打印從素數分解 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM