NOIP中數學 第2課 質數 上)

2021-10-16 07:20:25 字數 1515 閱讀 7482

思考三秒鐘,注意1不是質數

質數(prime number)又稱素數,質數定義為在大於1的自然數中,除了1和它本身以外不再有其它因數。在前面學過的篩質數章節中我們已經接觸過質數了。2 3 5 7 是前4個質數。

合數就是非質數,每乙個合數都可以以唯一形式被寫成質數的乘積,即分解質因數。

例題1:求質數

給定n個正整數ai,判定每個數是否是質數。

輸入格式 第一行包含整數n。

接下來n行,每行包含乙個正整數ai。

輸出格式 共n行,其中第 i 行輸出第 i 個正整數ai是否為質數,是則輸出「yes」,否則輸出「no」。

資料範圍 1≤n≤100, 1≤ai≤2^31−1

輸入樣例:22

6輸出樣例:

yesno

純暴力就可以了,注意優化

#include

using

namespace std;

intmain()

}if(flag) cout <<

"yes"

"no"

<< endl;}}

}

注意:

for(int j = 2;j <= x / j; j ++)此處不建議使用如下方式

1、j<=sqrt(x);,呼叫函式浪費時間

2、不推薦 j*j<=x,因為x=2147483647會越界未完待續

例題2:分解質因數

給定n個正整數ai,將每個數分解質因數,並按照質因數從小到大的順序輸出每個質因數的底數和指數。

輸入格式

第一行包含整數n。

接下來n行,每行包含乙個正整數ai。

輸出格式

對於每個正整數ai,按照從小到大的順序輸出其分解質因數後,每個質因數的底數和指數,每個底數和指數佔一行。

每個正整數的質因數全部輸出完畢後,輸出乙個空行。

資料範圍

1≤n≤100,

1≤ai≤2∗109

輸入樣例:26

8輸出樣例:

2 13 1

2 3

題解概要,暴力列舉n的所有因子,然後寫成因子乘積形式。由於列舉的時候從2開始列舉,當列舉到i時,2到i-1的因子已經分解完成,所以這樣分解的因子一定是質因子,不存在合數的問題。

#include

using

namespace std;

intmain()

cout << j <<

" "

1) cout <" "<<

1

練習題

1、分解質因數

2、小b與燈泡

3、質數的和與積

4、projecteuler 7

5、projecteuler 37

6、1到n的最小公倍數

第2課 C 中的引用

1.引用定義與語法 引用可以看作乙個已經定義的變數的別名 引用的語法 type name var include int main int argc,char argv 列印結果 a 5,b 5,a 0x22fe54,b 0x22fe54 由於b就是a的引用,b引用a,那麼b就是a的別名,指代同一段...

第2課 掌握C

1.定義結構體和類時別忘記在最後加入 號!例如class point 2.include 與 include h 的區別 不查詢執行時目錄,查詢執行時目錄!3.類的定義中,如果未指明成員型別,則預設為private.而結構體中則預設為public.4.引用 引用經常用在函式的傳參上。另外數值交換函式...

NOIP初賽準備 第6課時

noip2014 問題求解 不重a4 4 兩重6 1 1 8 8 一重11 連續 3 a2 3不連續 a2 3 c3 288同11 noip2013 不定選2 快排 以第1個數為基準 會退化為o n 2 最壞情況 平均o nlogn 歸併 o nlogn 堆排序 o nlogn 桶排序 o kn k...