獲取乙個數的各個質數因子

2021-09-05 03:26:26 字數 1096 閱讀 3720

這個題用到了題目的知識點,記錄一下吧。

假設s和m初始化,s = "a"; m = s;

再定義兩種操作,第一種操作:

m = s;

s = s + s;

第二種操作:

s = s + m;

求最小的操作步驟數,可以將s拼接到長度等於n

思路:

思路:

實際上求的是m取得最大值最少需要幾步

因為s一定是m的倍數

當n為質數,則只能通過步驟二來湊n

當n不是質數,將其拆分成各個質數,然後步驟就是每個質數的實現步驟

將n拆分成各個質數因子的實現**

void minstep(int n)

}}

整個題解:

/*

假設s和m初始化,s = "a"; m = s;

再定義兩種操作,第一種操作:

m = s;

s = s + s;

第二種操作:

s = s + m;

求最小的操作步驟數,可以將s拼接到長度等於n

思路:實際上求的是m取得最大值最少需要幾步

因為s一定是m的倍數

當n為質數,則只能通過步驟二來湊n

當n不是質數,將其拆分成各個質數,然後步驟就是每個質數的實現步驟

*/#include#includeusing namespace std;

int createnum()

//判斷乙個數是不是質數

bool judge(int n)

return false;

}void minstep(int n)

//不是質數,此時需要獲取質數的累加和以及質數的個數

//f(n)=f(a*b*c*d)=a-1+b-1+c-1+d-1

int sum=0, num=0;

for(int i=2; i<=n; i++)

} cout<<"最少次數為:"<}int main()

return 0;

}

php實現求乙個數的質數因子

1 2 num trim fgets stdin 3 如果 num大於1 4 i 2 5 while num 1 10 i 11 12 13 功能 輸入乙個正整數,按照從小到大的順序輸出它的所有質數的因子 如180的質數因子為2 2 3 3 5 最後乙個數後面也要有空格 詳細描述 函式介面說明 pu...

找乙個數的因子個數,因子和

1.所有因子個數 如果乙個數是因數,就不斷除這個數,儲存這個因子次方的數 temp 運用所有因子個數計算公式 見上圖 儲存因子個數的 ans不斷乘 temp 1 注意 當最後,在 x 不斷除因數得到的值有兩種情況 x 1,這說明 x 沒有其他因子了。x 1,這時 x 為其乙個素數因子 且這個因子大於...

判斷乙個數的素因子個數

有感而發 就寫一下 doge 這裡手動 solemntee include using namespace std typedef long long ll intmain ans if n 1 ans 如果是個素數 n就不會被除到1 cout 輸出乙個非素數的所有素因子 個數 include us...