這個題用到了題目的知識點,記錄一下吧。
假設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...