求乙個數的質因數(1個或n個)

2021-06-29 06:50:00 字數 858 閱讀 2025

在做 「容斥原理」  題時經常需要求出乙個數的質因子,而且不是所求數的位數很多,就是一次求n多數的質因子。

下面分別給出兩種型別的**,供拋磚引玉。

第一種型別:

用於每次只能求出乙個數的質因子,適用於題目中給的n的個數不是很多,但是n又特別大的情況。

#includeint main()}}

if(n>1) //應對「n=103」這種情況

for(i=0;i

第二種型別:

求出1~n任意給定數的質因子,適用於題目中給的n比較多,但n不是很大的情況。

想法:將給定1~n範圍內所有數的質因子全部求出,存到乙個二維陣列中(這裡使用了c++提供的vector容器,比較方便),最後根據所輸入的數輸出其的質因子。

如,分別求出0~104所對應的質因子:

#include#include#include#include//必須要包含該標頭檔案

using namespace std;

const int m=105; //用const定義乙個常量m

vectorp[m]; //建立乙個vector物件陣列,相當於乙個二維陣列

int vis[m]; //篩素法中用於標記是否走過

void init()

{ int i,j;

memset(vis,0,sizeof(vis)); //將vis陣列初始化為0

for(i=0;i

乙個數的約數的個數 質因數分解

problem description 乙個數,如果他的素數因子只包括2,3,5,7,則稱這個數為萌數,比如,下面這些數就是前20個萌數 1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27。現在給你乙個萌數,請程式設計計算它的約數的個數。比如,4是乙...

求乙個數中1的個數

碰到遇到乙個有趣的題,求乙個數二進位制的表示中1的個數,該題有兩種解法,一種是使用短除法將該數直接轉化為二進位制數,另一種比較巧妙的演算法是使用與運算,原理如下圖所示 依照此種思入有如下演算法 int numberof1 solution3 int i return count 依照短處法的思路 有...

求乙個數約數的個數

求約數的個數 計算乙個整數的約數個數 輸入格式 輸入乙個整數 輸出格式 輸出一行,為輸入整數的約數的個數 樣例輸入 10 樣例輸出 4ac import math number int raw input count 0 sqrt float math.sqrt number if number s...