1. 程式人生 > >求一個數的所有質因子(C++)

求一個數的所有質因子(C++)

功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子為2 2 3 3 5 )

最後一個數後面也要有空格

剛開始沒有思路,後來查了下質因子的求法,可通過以下方法求出:

#include<iostream>
#include<string>
using namespace std;
string getResult(long input) {
    int i = 2;
    string result="";
    for (; input >= 2;) {
    if(input%i==0){
        result += to_string(i) + " ";
        input /=i ;
    }
    else {
        i++;
    }
    }
    return result;
}
int main() {
    long input;
    cin >> input;
    cout << getResult(input);
    return 0;
}

該方法從質數2開始,如果能除盡,就將被分解數除以已知的質因子,逐步分解,最終求得所有的質因子。

相關推薦

個數所有因子C++

功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子為2 2 3 3 5 ) 最後一個數後面也要有空格剛開始沒有思路,後來查了下質因子的求法,可通過以下方法求出:#include<iostream>#include<st

個數的正數因子模板

轉:文章 int f(int x) { int sum=1,cnt; for(int i=2;i*i<=x;i++) { cnt=0; while(x%i==0) { x/=i;

個數因子

void init(ll n){ ll i;num = 0; for(i = 2;i*i <= n;i++){ if(n%i == 0){

個數因子以及尤拉函式

求一個數的質因子 程式碼:#include<stdio.h> int main() { long long a[100],num,i,n; while(~scanf("%I64d",&n)) { num=0;

演算法 - n個數的中位數C++

  //**************************************************************************************************** // // 求n個數的中位數 - C++ - by Chimomo // //

算數基本定理個數所有約數的個數——一道OJ題目

#include <cstdio> #include <iostream> #include <map> #include <set> using namespace std; int min(int a,int b) { if(a>b) retur

如何判斷個數是否是質數C語言-超詳細

質數是只能被1或者自身整除的自然數(不包括1),稱為質數。 判斷是否是質數最直觀和簡單的方法就是從2開始直接除,能除盡(餘數為0)就不是質數。則C語言實現為: int isprime(int m) {

快速判斷個數是否是素數模板

bool isPrime( int num ) { if(num ==2|| num==3 ) //兩個較小數另外處理 return 1 ; if(num %6!= 1&&num %6!= 5) //不在6

次邊鋒客戶端C++實習生面試

第一篇部落格,也是第一次寫部落格,就記一次準備的不是很充分的面試吧。 總體來說應該不算難,還是挺簡單的。 到那邊後先填一張資訊表,然後hr會過來讓你做一套試卷,選擇題和簡答題。大概包括引用、運算子過載、模板類的靜態變數、建構函式等相關,選擇題比較基礎。簡答題包括lambd

判斷個數是否為素數質數-- 程式碼優化

【概念】 質數又稱素數。一個大於1的自然數,除了1和它自身外,不能整除其他自然數的數叫做質數;否則稱為合數。 這裡以Python程式碼為例,最簡單的一種想法,按照概念: def is_prime(num

string替換所有指定字串C++

C++的string提供了replace方法來實現字串的替換,但是對於將字串中某個字串全部替換這個功能,string並沒有實現,我們今天來做的就是這件事。首先明白一個概念,即string替換所有字串,將"12212"這個字串的所有"12"都替換成"21",結果是什麼? 可以

如何判斷個數是否為素數質數

用For語句實現迴圈 基本思路:若一個數n能被2和√n之間的數整除(取餘為0),則可判斷n為素數。可從2開始測試,一直到√n為止。 For語句語法規則 一般形式: for(表示式1;表示式2;表示式3) 語句 for(迴圈變數賦初值;迴圈條件;迴圈變數

php判斷個數是否為質數素數

以下內容僅為個人參考,如有錯誤,請多多指教! <?php header('Content-Type:text/html;charset=utf-8'); $num = isset($_GET['

1000以內所有素數/合數之和,java演算法23行

這基本上是最簡單的方法了,應該沒有之一了,嘿嘿~ 根據素數的定義:只能被1和他本身整除。1不是素數。 寫出下面程式碼,執行正確。 把註釋去掉可以求出1000以內所有素數的和。 class FindAll { //static int sum=0; static voi

高斯約當法逆矩陣的演算法實現C++

#include"iostream.h" #include"math.h" void main() { float a[10][10],A[10][10],b[10],c[10][10],d=0,f=0; int i=0,j=0,k=1,l=0,m=0,n=0; //---

步步編寫SqlHelper類C#

在C#中使用ADO.NET連線資料庫的時候,每次連線都要編寫連線,開啟,執行SQL語句的程式碼,很麻煩,編寫一個SqlHelper類,把每次連線都要寫的程式碼封裝成方法,把要執行的SQL語句通過引數傳進去,可以大大簡化編碼,下面就一步步的編寫一個SqlHelpe

算法 - 個數組的最長遞減子序列C++

str log bst article subst else from return ear //************************************************************************************

個數所有因子

== sqrt color pre col num blog 因子 print def getNum(num): dict={}   #因子數都是以sqrt(num)為界對稱的,找出<=sqrt(num)這邊的,用num/i就同時獲得了另一半的因子數,從1開

HDU-1695 GCD一個區間內與個數個數

題意:   給你一個T,是樣例的個數,接下來是五個數l1,r1,l2,r2,k  前四個數代表兩個區間(l1,r1),(l2,r2)這個題l1=1,l2=1;  取x1屬於(1,r1),x2屬於(1,r2);   求使得gcd(x1,x2)==k 的(x1,x2)的個數,特

(hdu step 2.1.3)Largest prime factor(個數的最大因子的位置)

Everybody knows any number can be combined by the prime number.Now, your task is telling me what position of the largest prime factor.The position of prime