演算法小測試
㈠ 從大到小進行測試,寫出一個求兩數最大公約數的窮舉演算法。
#include<stdio.h>
voidmain()
{
intm,n,i,j,k;
printf("輸入兩個正整數:");
scanf("%d%d",&m,&n);
k=m<n?m:n;
for(i=1;i<=k;i++)
{
if(m%i==0&&n%i==0)
j=i;
}
printf("%d和%d的最大公約數是%d ",m,n,j);
}
㈡ 經典目標檢測演算法介紹
姓名:牛曉銀;學號:20181213993;學院:計算機科學與技術
轉自:https://zhuanlan.hu.com/p/34142321
【嵌牛導讀】:目標檢測,也叫目標提取,是一種基於目標幾何和統計特徵的圖像分割。隨著計算機技術的發展和計算機視覺原理的廣泛應用,利用計算機圖像處理技術對目標進行實時跟蹤研究越來越熱門,對目標進行動態實時跟蹤定位在智能化交通系統、軍事目標檢測及醫學導航手術中手術器械定位等方面具有廣泛的應用價值。
【嵌牛鼻子】:目標檢測、檢測模型、計算機視覺
【嵌牛提問】:你知道或者用過哪些目標檢測演算法?
【嵌牛正文】:
(一)目標檢測經典工作回顧
本文結構
兩階段模型因其對圖片的兩階段處理得名,也稱為基於區域(Region-based)的方法,我們選取R-CNN系列工作作為這一類型的代表。
R-CNN: R-CNN系列的開山之作
論文鏈接: Rich feature hierarchies for accurate object detection and semantic segmentation
本文的兩大貢獻:1)CNN可用於基於區域的定位和分割物體;2)監督訓練樣本數緊缺時,在額外的數據上預訓練的模型經過fine-tuning可以取得很好的效果。第一個貢獻影響了之後幾乎所有2-stage方法,而第二個貢獻中用分類任務(Imagenet)中訓練好的模型作為基網路,在檢測問題上fine-tuning的做法也在之後的工作中一直沿用。
傳統的計算機視覺方法常用精心設計的手工特徵(如SIFT, HOG)描述圖像,而深度學習的方法則倡導習得特徵,從圖像分類任務的經驗來看,CNN網路自動習得的特徵取得的效果已經超出了手工設計的特徵。本篇在局部區域應用卷積網路,以發揮卷積網路學習高質量特徵的能力。
R-CNN將檢測抽象為兩個過程,一是基於圖片提出若干可能包含物體的區域(即圖片的局部裁剪,被稱為Region Proposal),文中使用的是Selective Search演算法;二是在提出的這些區域上運行當時表現最好的分類網路(AlexNet),得到每個區域內物體的類別。
另外,文章中的兩個做法值得注意。
一是數據的准備。輸入CNN前,我們需要根據Ground Truth對提出的Region Proposal進行標記,這里使用的指標是IoU(Intersection over Union,交並比)。IoU計算了兩個區域之交的面積跟它們之並的比,描述了兩個區域的重合程度。
文章中特別提到,IoU閾值的選擇對結果影響顯著,這里要談兩個threshold,一個用來識別正樣本(如跟ground truth的IoU大於0.5),另一個用來標記負樣本(即背景類,如IoU小於0.1),而介於兩者之間的則為難例(Hard Negatives),若標為正類,則包含了過多的背景信息,反之又包含了要檢測物體的特徵,因而這些Proposal便被忽略掉。
另一點是位置坐標的回歸(Bounding-Box Regression),這一過程是Region Proposal向Ground Truth調整,實現時加入了log/exp變換來使損失保持在合理的量級上,可以看做一種標准化(Normalization)操作。
小結
R-CNN的想法直接明了,即將檢測任務轉化為區域上的分類任務,是深度學習方法在檢測任務上的試水。模型本身存在的問題也很多,如需要訓練三個不同的模型(proposal, classification, regression)、重復計算過多導致的性能問題等。盡管如此,這篇論文的很多做法仍然廣泛地影響著檢測任務上的深度模型革命,後續的很多工作也都是針對改進這一工作而展開,此篇可以稱得上"The First Paper"。
Fast R-CNN: 共享卷積運算
論文鏈接: Fast R-CNN
文章指出R-CNN耗時的原因是CNN是在每一個Proposal上單獨進行的,沒有共享計算,便提出將基礎網路在圖片整體上運行完畢後,再傳入R-CNN子網路,共享了大部分計算,故有Fast之名。
上圖是Fast R-CNN的架構。圖片經過feature extractor得到feature map, 同時在原圖上運行Selective Search演算法並將RoI(Region of Interset,實為坐標組,可與Region Proposal混用)映射到到feature map上,再對每個RoI進行RoI Pooling操作便得到等長的feature vector,將這些得到的feature vector進行正負樣本的整理(保持一定的正負樣本比例),分batch傳入並行的R-CNN子網路,同時進行分類和回歸,並將兩者的損失統一起來。
RoI Pooling 是對輸入R-CNN子網路的數據進行准備的關鍵操作。我們得到的區域常常有不同的大小,在映射到feature map上之後,會得到不同大小的特徵張量。RoI Pooling先將RoI等分成目標個數的網格,再在每個網格上進行max pooling,就得到等長的RoI feature vector。
文章最後的討論也有一定的借鑒意義:
multi-loss traing相比單獨訓練classification確有提升
multi-scale相比single-scale精度略有提升,但帶來的時間開銷更大。一定程度上說明CNN結構可以內在地學習尺度不變性
在更多的數據(VOC)上訓練後,精度是有進一步提升的
Softmax分類器比"one vs rest"型的SVM表現略好,引入了類間的競爭
更多的Proposal並不一定帶來精度的提升
小結
Fast R-CNN的這一結構正是檢測任務主流2-stage方法所採用的元結構的雛形。文章將Proposal, Feature Extractor, Object Classification&Localization統一在一個整體的結構中,並通過共享卷積計算提高特徵利用效率,是最有貢獻的地方。
Faster R-CNN: 兩階段模型的深度化
論文鏈接: Faster R-CNN: Towards Real Time Object Detection with Region Proposal Networks
Faster R-CNN是2-stage方法的奠基性工作,提出的RPN網路取代Selective Search演算法使得檢測任務可以由神經網路端到端地完成。粗略的講,Faster R-CNN = RPN + Fast R-CNN,跟RCNN共享卷積計算的特性使得RPN引入的計算量很小,使得Faster R-CNN可以在單個GPU上以5fps的速度運行,而在精度方面達到SOTA(State of the Art,當前最佳)。
本文的主要貢獻是提出Regional Proposal Networks,替代之前的SS演算法。RPN網路將Proposal這一任務建模為二分類(是否為物體)的問題。
第一步是在一個滑動窗口上生成不同大小和長寬比例的anchor box(如上圖右邊部分),取定IoU的閾值,按Ground Truth標定這些anchor box的正負。於是,傳入RPN網路的樣本數據被整理為anchor box(坐標)和每個anchor box是否有物體(二分類標簽)。RPN網路將每個樣本映射為一個概率值和四個坐標值,概率值反應這個anchor box有物體的概率,四個坐標值用於回歸定義物體的位置。最後將二分類和坐標回歸的損失統一起來,作為RPN網路的目標訓練。
由RPN得到Region Proposal在根據概率值篩選後經過類似的標記過程,被傳入R-CNN子網路,進行多分類和坐標回歸,同樣用多任務損失將二者的損失聯合。
小結
Faster R-CNN的成功之處在於用RPN網路完成了檢測任務的"深度化"。使用滑動窗口生成anchor box的思想也在後來的工作中越來越多地被採用(YOLO v2等)。這項工作奠定了"RPN+RCNN"的兩階段方法元結構,影響了大部分後續工作。
單階段(1-stage)檢測模型
單階段模型沒有中間的區域檢出過程,直接從圖片獲得預測結果,也被成為Region-free方法。
YOLO
論文鏈接: You Only Look Once: Unified, Real-Time Object Detection
YOLO是單階段方法的開山之作。它將檢測任務表述成一個統一的、端到端的回歸問題,並且以只處理一次圖片同時得到位置和分類而得名。
YOLO的主要優點:
快。
全局處理使得背景錯誤相對少,相比基於局部(區域)的方法, 如Fast RCNN。
泛化性能好,在藝術作品上做檢測時,YOLO表現比Fast R-CNN好。
YOLO的工作流程如下:
1.准備數據:將圖片縮放,劃分為等分的網格,每個網格按跟Ground Truth的IoU分配到所要預測的樣本。
2.卷積網路:由GoogLeNet更改而來,每個網格對每個類別預測一個條件概率值,並在網格基礎上生成B個box,每個box預測五個回歸值,四個表徵位置,第五個表徵這個box含有物體(注意不是某一類物體)的概率和位置的准確程度(由IoU表示)。測試時,分數如下計算:
等式左邊第一項由網格預測,後兩項由每個box預測,以條件概率的方式得到每個box含有不同類別物體的分數。 因而,卷積網路共輸出的預測值個數為S×S×(B×5+C),其中S為網格數,B為每個網格生成box個數,C為類別數。
3.後處理:使用NMS(Non-Maximum Suppression,非極大抑制)過濾得到最後的預測框
損失函數的設計
損失函數被分為三部分:坐標誤差、物體誤差、類別誤差。為了平衡類別不均衡和大小物體等帶來的影響,損失函數中添加了權重並將長寬取根號。
小結
YOLO提出了單階段的新思路,相比兩階段方法,其速度優勢明顯,實時的特性令人印象深刻。但YOLO本身也存在一些問題,如劃分網格較為粗糙,每個網格生成的box個數等限制了對小尺度物體和相近物體的檢測。
SSD: Single Shot Multibox Detector
論文鏈接: SSD: Single Shot Multibox Detector
SSD相比YOLO有以下突出的特點:
多尺度的feature map:基於VGG的不同卷積段,輸出feature map到回歸器中。這一點試圖提升小物體的檢測精度。
更多的anchor box,每個網格點生成不同大小和長寬比例的box,並將類別預測概率基於box預測(YOLO是在網格上),得到的輸出值個數為(C+4)×k×m×n,其中C為類別數,k為box個數,m×n為feature map的大小。
小結
SSD是單階段模型早期的集大成者,達到跟接近兩階段模型精度的同時,擁有比兩階段模型快一個數量級的速度。後續的單階段模型工作大多基於SSD改進展開。
檢測模型基本特點
最後,我們對檢測模型的基本特徵做一個簡單的歸納。
檢測模型整體上由基礎網路(Backbone Network)和檢測頭部(Detection Head)構成。前者作為特徵提取器,給出圖像不同大小、不同抽象層次的表示;後者則依據這些表示和監督信息學習類別和位置關聯。檢測頭部負責的類別預測和位置回歸兩個任務常常是並行進行的,構成多任務的損失進行聯合訓練。
相比單階段,兩階段檢測模型通常含有一個串列的頭部結構,即完成前背景分類和回歸後,把中間結果作為RCNN頭部的輸入再進行一次多分類和位置回歸。這種設計帶來了一些優點:
對檢測任務的解構,先進行前背景的分類,再進行物體的分類,這種解構使得監督信息在不同階段對網路參數的學習進行指導
RPN網路為RCNN網路提供良好的先驗,並有機會整理樣本的比例,減輕RCNN網路的學習負擔
這種設計的缺點也很明顯:中間結果常常帶來空間開銷,而串列的方式也使得推斷速度無法跟單階段相比;級聯的位置回歸則會導致RCNN部分的重復計算(如兩個RoI有重疊)。
另一方面,單階段模型只有一次類別預測和位置回歸,卷積運算的共享程度更高,擁有更快的速度和更小的內存佔用。讀者將會在接下來的文章中看到,兩種類型的模型也在互相吸收彼此的優點,這也使得兩者的界限更為模糊。
㈢ 寫一個有效的演算法來測試一個給定的數組A[1...n]是否是一個堆,該演算法的時間復雜性是多少
時間復雜度是O(n),可以從n到1,也可以從1到n,從n開始就看(k/2)下取整下標的元素(也就是堆中的雙親)是否滿足大根或者小根的條件,從1開始就看2k和2k+1下標的元素(就是堆中的左右孩子)是否滿足堆的條件
㈣ 1. 編寫程序使用分治演算法MINMAX求解數組的最小值和最大值,並用實際數組對數組進行測試。 2. 要求演算法中
#include <stdio.h>
void minmax(int array[], int begin, int end, int &min, int &max, int &count)
{
int mid = (begin + end)/2;
if (begin == end)
{
count++;
if (array[mid] < min) {
min = array[mid];
} else {
if (array[mid] > max)
max = array[mid];
count++;
}
return;
}
minmax(array, begin, mid, min ,max, count);
minmax(array, mid + 1, end, min ,max, count);
}
void main()
{
int array[10] = {9,8,7,6,5,4,3,2,1,0};
int min = array[0], max = -1, count = 0;
minmax(array, 0,9,min,max,count);
printf("min = %d, max = %d, count = %d\n", min,max,count);
}
㈤ 高一信息技術演算法與程序設計階段測試
數據加密技術要求只有在指定的用戶或網路下,才能解除密碼而獲得原來的數據,這就需要給數據發送方和接受方以一些特殊的信息用於加解密,這就是所謂的密鑰。其密鑰的值是從大量的隨機數中選取的。按加密演算法分為專用密鑰和公開密鑰
㈥ 目標檢測演算法---faster rcnn 知識簡要回顧(測試篇)
Faster RCNN檢測部分主要可以分為四個模塊:
1.特徵抽取:用於抽取圖像特徵,一般可以使用vgg、resnet和mobilenet等backbone;
2.RPN(Region Proposal Network):用於產生候選框,主要做一些粗糙的分類和回歸操作;
3.RoI Pooling:主要是為了解決全連接層需要固定尺寸輸入,而實際輸入大小不一的問題;
4.Classification and Regression:精細化分類和回歸。
faster rcnn演算法大致流程如下:
彩色圖像通過backbone進行特徵提取,輸出最後一層的feature map。接著將這些feature map進一步做基於3x3卷積核的特徵提取,該目的是增強模型的魯棒性。將輸出送入兩個分支,第一個分支跟類別有關,這里主要是用於簡單分類,區分是背景還是物體,這是針對anchor而言的;第二個分支則是用於初步預測候選框的偏移量,這個也是基於anchor而言的;再將前兩個分支的結果送入圖中的proposal中,首先會根據positive類的score篩選前6000個候選框,再將anchor的坐標和得到的偏移進行整合,得到初步候選框坐標,接著在做NMS,除去重疊嚴重的框,再經過了NMS後的框中,根據類別score取前300個框。然後將結果送入roi pooing層,用於生成固定尺寸的特徵區域,以方便後邊的全連接層接受信息;全連接層用於最後提取特徵,得到精細的類別和框的偏移量。
㈦ 演算法測試題
分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,利用雙重for循環,第一層控制行,第二層控制列。
㈧ 怎麼測試一個演算法的性能,用什麼軟體
這個要從兩個維度去考證:
一、測算指標,演算法都是有數學理論基礎的,在翻譯成計算機程序後,演算法的執行效率可以用賦值、比較、運算等操作次數,以及緩存、內存佔用率等指標進行一定的估算,還應對演算法效率進行計算,進行比較評估,包括迭代深度、循環/判斷嵌套深度等指標。
二、實際測試,這個就是要把演算法真的用計算機實現出來,將演算法邏輯封裝為函數、控制項、組件等,可調用的獨立環節(盡量減少非演算法語句的干擾),然後進行實際調用,記錄執行周期,分析實際性能。比如對比記錄新舊演算法單次執行的周期、固定數量多次執行的周期、執行期間資源佔用率、多線程並發調用的執行效率等指標。
另外、對於實際測試,如果想用專業測試軟體執行,可以用LoadRunner、Robot等專業軟體測試工具執行相應操作,但是對於您的要求,我還是建議收集性能指標的程序最好自己寫,其實並不復雜,就是調用您的演算法組件,把執行時間等參數記下來。
㈨ 推薦演算法改版前的AB測試 實驗設計
某商城,搭建了以個性化推薦系統為核心的「猜你喜歡」功能。功能上線後,發現推薦的准確率(用戶進入物品詳情頁定義為判斷真正的正樣本)較低。對此,數據分析師優化了推薦模型。
在新的推薦模型上線前,進行AB測試,以此判斷新模型是否能夠顯著提升推薦的准確率。
AB測試是為明確某個問題,製作兩個(A/B)或多個(A/B/n)版本,在同一時間維度,分別讓組成成分相同(相似)的訪客群組(目標人群)隨機的訪問這些版本,收集各群組的用戶體驗數據和業務數據,最後分析、評估出最好版本,正式採用。
① 先驗性: A/B測試能夠先於上線,得出結論。不再需要先將版本發布,再通過數據驗證效果,從而一定程度上減少改版帶來的風險
② 並行性: A/B測試是將兩個或以上的方案同時在線試驗,這樣做的好處在於保證了每個版本對應的時間環境、數據環境保持一致,便於更加科學客觀地對比優劣。
③ 科學性: 如果能保證流量分配的科學性,將相似特徵的用戶均勻的分配到試驗組中,就可以避免出現數據偏差,使得試驗的結果更有代表性。
① 產品UI
不同行業的產品需要不同的風格,同時還要與企業的品牌相得益彰。利用A/B 測試優化UI能給用戶帶來更好的交互體驗和視覺感受。
② 文案內容
顧名思義是指用戶閱讀到的文字內容。小到圖片配文和按鈕文字,大到文章標題甚至版塊主題。這些部分都可以嘗試變換文案內容,測試不同方案的數據效果。
③ 頁面布局
有些時候,可能根本不需要對產品的UI或是文案內容作出調整,只是在布局排版上的改變,就可以出現增長的效果。
④ 產品功能
想給產品增加一個新功能,可是很難確定是否能達到用戶的預期,如果盲目上線,可能會造成一些損失。使用A/B 測試,對你的用戶真正負責。 例如,社交類產品在付費查看照片的新功能正式上線前,需要進行A/B 測試,以驗證功能的使用情況和效果。
⑤ 演算法/演算法
包括基於內容的推薦演算法(根據用戶的歷史記錄推薦相似內容)、基於協同過濾的推薦演算法(根據有相似興趣用戶的行為推薦相關內容)、基於關聯規則的推薦演算法(根據商品/內容本身的相關性給用戶推薦)。演算法優化迭代前,需要真實的數據進行測試。
統計假設: 是對總體參數(包括總體均值μ等)的具體數值所作的陳述。
原假設: 是試驗者想收集證據予以反對的假設 ,又稱「零假設」,記為 H0
備擇假設: 也稱「研究假設」,是試驗者想收集證據予以支持的假設,記為 H1
雙側檢驗與單側檢驗: 如果備擇假設沒有特定的方向性,並含有符號「=」,這樣的稱為雙側檢驗。如果備擇假設具有特定的方向性,並含有符號 「>」 或 「<」 的假設檢驗,稱為單側檢驗。
臨界值: 是指在原假設為真的條件下,樣本數據拒絕原假設這樣一個事件發生的概率。
第 I 類錯誤(棄真錯誤) :原假設為真時拒絕原假設;第 I 類錯誤的概率記為 α(alpha)。
· 第 II 類錯誤(取偽錯誤) :原假設為假時未拒絕原假設。第 II 類錯誤的概率記為 β(Beta)。
先認定原假設成立,然後在事先給定的顯著性水平下,構造一個小概率事件。根據抽樣結果觀察小概率事件是否發生。若小概率事件發生,則拒絕原假設,否則接受原假設
(1) 提出假設
本次AB測試,目的是希望提升猜你喜歡功能的推薦效果。所以選取推薦系統的 准確率 ,作為優化指標。
准確率表示預測為正的樣本中,真正的正樣本的比例。公式如下
R(u)是根據用戶在訓練集上的行為給用戶作出的推薦列表,而T(u)是用戶在測試集上的行為列表。最簡單的例子:例如推薦系統給用戶推薦了10件物品,用戶進入物品詳情頁定義為判斷真正的正樣本的行為,用戶進入了其中3件物品的詳情頁。則此時准確率=3/10=30%
假設我們認為,如果新的推薦演算法,比原推薦演算法,顯著高於5%以上,則可將新推薦演算法發布至生產環境。此時我們可以得到假設:
原假設H0:π2-π1≤5%
備擇假設H1:π2-π1>5%
(2)確定顯著性水平α
本次實驗中,α 值設定 0.05(5%),這是假設檢驗中最常用的小概率標准值。表示原假設為真時, 拒絕原假設的概率
(3)確定臨界值
臨界值是顯著性水平對應的標准正態分布的分位數。顯著性水平0.05的情況下,單側檢驗對應的標准正態分布的分位數是1.645,雙側檢驗的標准正態分布的分位數為1.96
(4)收集實驗數據,得出結論
由樣本值求得檢驗統計量的優化指標的數值。若觀察值在拒絕域內,則拒絕原假設H0,否則接受原假設H1
定義新推薦演算法的准確率為π1,新推薦演算法的准確率為π2。
Ho: π1-π2≤5%
H1: π1-π2>5%
實驗目標人群: 從進入商城,且使用了「為你推薦」功能的用戶流量(UV)中,隨機抽取5%,作為實驗目標人群。其中的50%為實驗組,50%為對照組
實驗時間: 1周
假設檢驗方式:
不同的AB測試場景,適用於不同的檢驗方式,如上圖所示。
本次AB測試,由於兩個推薦系統版本是獨立的,且樣本數足夠大,認為滿足正態分布。根據HO、H1的假設,可判斷本次檢驗為兩個獨立樣本的總體均值的單側檢驗,且總體方差未知,需要用樣本方差代替總體方差。此時計算統計量公式為
顯著性水平: 0.05
臨界值: 在顯著性水平為0.05時,單側檢驗的臨界值Zα為1.645
實驗數據 (為方便計算):實驗一周後,有10000用戶,使用新推薦演算法,准確率的平均值為41%,標准差為20%。有10000用戶,使用原推薦演算法,准確率的平均值為35%,標准差為10%。此時新演算法的准確率定義為x,則x的平均值=41%,原演算法的推薦率定義為y,則y的平均值=35%
計算檢驗統計量:
檢驗結果: 統計量Z=4.4722,臨界值Zα=1.645.由於統計量的值大於臨界值而落入拒絕域內,所以拒絕原假設H0,認為新推薦演算法的准確率,比原推薦演算法顯著高出5%,新演算法可發布至生產環境。
㈩ 素性測試的隨機演算法
費馬測試 利用費馬小定理來測試。 Miller-Rabin 質數測試 歐拉-雅科比測試 對於N,挑選任意的M,測試(M/N)≡M^[(N-1)/2]。如果不成立,則N為合數。否則N有一半的機率是質數。
上下素性判定法
首先,本文英文字母都表示整數,上半部B 》3N 》W,下半部B 》W 》3N。大於3的素數只有6N-1和6N+1兩種形式,我們只需判定這兩種數是素數還是合數即可。命題 1 對於B=36N+1 形數而言。若不定方程(3N)^2+N-(B-1)/36=W^2 有整數解,則 6(3N-W)+1 是小因子數;6(3N+W)+1 是大因子數。若不定方程 (3N)^2-N-(B-1)/36=W^2 有整數解,則 6(3N-W)-1 是小因子數;6(3N+W)-1 是大因子數。兩式都無解,是素數。命題 2對於B=36N+7 形數而言。若不定方 (3N)^2+4N-(B-7)/36=W^2+W 有整數解,則 6(3N-W)+1 是小因子數,6(3N+W+1)+1 是大因子數。若不定方程 (3N+2)^2+2N+2-(B+29)/36=W^2+W 有整數解,則 6(3N+2-W)-1 是小因子數,6(3N+W+3)-1 是大因子數。兩式都無解,是素數。命題 3對於B=36N+13 形數而言。若不定方程 (3N+1)^2+N-(B-13)/36=W^2 有整數解,則 6(3N+1-W)+1 是小因子數,6(3N+1+W)+1是大因子數。若不定方程 (3N+2)^2-N-(B+23)/36=W2 有整數解,則 6(3N+2-W)-1 是小因子數,6(3N+2+W)-1是大因子數。兩式都無解,是素數。命題 4 對於B=36N+19 形數而言。若不定方程(3N+1)^2+4N+1-(B-19)/36=W^2 +W 有整數解,則 6(3N+1-W)+1 是小因子數;6(3N+2+W)+1 是大因子數。若不定方程 (3N+1)^2+2N+1-(B+17)/36=W^2 +W 有整數解,則 6(3N+1-W)-1 是小因子數;6(3N+2+W)-1 是大因子數。兩式都無解,是素數。命題 5 對於B=36N+25 形數而言。若不定方 (3N+2)^2+N-(B-25)/36=W^2有整數解,則 6(3N+2-W)+1 是小因子數,6(3N+2+W)+1 是大因子數。若不定方程 (3N+1)^2-N-(B+11)/36=W^2有整數解,則 6(3N+1-W)-1 是小因子數,6(3N+1+W)-1 是大因子數。兩式都無解,是素數。命題 6 對於B=36N+31 形數而言。若不定方程 (3N+2)^2+4N+2-(B-31)/36=W^2 +W 有整數解,則 6(3N+2-W)+1 是小因子數,6(3N+3+W)+1是大因子數。若不定方程 (3N+1)^2-4N-1-(B+5)/36=W^2+W有整數解,則 6(3N-W)-1 是小因子數,6(3N+1+W)-1是大因子數。兩式都無解,是素數。命題 7對於B=36N-1 形數而言。若不定方程(3N)^2-N+(B-1)/36=W^2 有整數解,則 6(3N-W)+1 是小因子數;6(3N+W)-1 是大因子數。若不定方程 (3N)^2+N+(B-1)/36=W^2 有整數解,則 6(W-3N)-1 是小因子數;6(W+3N)+1 是大因子數。兩式都無解,是素數。命題 8對於B=36N+5 形數而言。若不定方 (3N)^2+2N+(B-5)/36=W^2+W 有整數解,則 6(W-3N)+1 是小因子數,6(W+3N+1)-1 是大因子數。若不定方程 (3N+2)^2+4N+2+(B+31)/36=W^2+W 有整數解,則 6(W-3N-2)-1 是小因子數,6(W+3N+3)+1 是大因子數。兩式都無解,是素數。命題 9對於B=36N+11 形數而言。若不定方程 (3N+1)^2-N+(B-11)/36=W^2 有整數解,則 6(W-3N-1)+1 是小因子數,6(W+3N+1)-1是大因子數。若不定方程 (3N+2)^2+N+(B+25)/36=W2 有整數解,則 6(W-3N-2)-1 是小因子數,6(W+3N+2)+1是大因子數。兩式都無解,是素數。命題 10 對於B=36N+17 形數而言。若不定方程(3N+1)^2+2N+1+(B-17)/36=W^2 +W 有整數解,則 6(W-3N-1)+1 是小因子數;6(W+3N+2)-1 是大因子數。若不定方程 (3N+1)^2+4N+1+(B+19)/36=W^2 +W 有整數解,則 6(W-3N-1)-1 是小因子數;6(W+3N+2)+1 是大因子數。兩式都無解,是素數。命題 11 對於B=36N+23 形數而言。若不定方 (3N+2)^2-N+(B-23)/36=W^2有整數解,則 6(W-3N-2)+1 是小因子數,6(W+3N+2)+1 是大因子數。若不定方程 (3N+1)^2+N+(B+13)/36=W^2有整數解,則 6(W-3N-1)-1 是小因子數,6(W+3N+1)+1 是大因子數。兩式都無解,是素數。命題 12 對於B=36N+31 形數而言。若不定方程 (3N+2)^2+2N+2+(B-29)/36=W^2 +W 有整數解,則 6(W-3N-2)+1 是小因子數,6(W+3N+3)-1是大因子數。若不定方程 (3N)^2-4N+(B+7)/36=W^2+W有整數解,則 6(W-3N)-1 是小因子數,6(W+3N+1)+1是大因子數。兩式都無解,是素數。