0-100之间的素数、判断素数的基本和优化方法
生活随笔
收集整理的這篇文章主要介紹了
0-100之间的素数、判断素数的基本和优化方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
100以內的素數有25個,
2、3、5、7、11、
13、17、19、23、29、
31、37、41、43、47、
53、59、61、67、71、
73、79、83、89、97;
用C語言輸出一下;
?
根據素數定義直接來的判斷是否是素數的算法;
?
bool isp(int n)
{
? ? for(int i = 2; i < n; i++)
? ? {
? ? ? ? if(n % i == 0) return false;
? ? }
? ? return true;
}
優化的方法;
int isPrime(int n)
{
? ? if (n <= 1)
? ? {
? ? ? ? return 0;
? ? }
? ? for (int i = 2; i * i <= n; i++)
? ? {
? ? ? ? if (n % i == 0)
? ? ? ? {
? ? ? ? ? ? return 0;
? ? ? ? }
? ? }
? ? return 1;
}
? ? ACM里應該有這個;可能還有不同的寫法;
用MFC看一下;
VC2012,單文檔工程;全部的視類CPP代碼;用兩種判斷都輸出1-100的素數看一下;
// primeView.cpp : CprimeView 類的實現 //#include "stdafx.h" // SHARED_HANDLERS 可以在實現預覽、縮略圖和搜索篩選器句柄的 // ATL 項目中進行定義,并允許與該項目共享文檔代碼。 #ifndef SHARED_HANDLERS #include "prime.h" #endif#include "primeDoc.h" #include "primeView.h"#ifdef _DEBUG #define new DEBUG_NEW #endifbool isp(int ); int isPrime(int );// CprimeViewIMPLEMENT_DYNCREATE(CprimeView, CView)BEGIN_MESSAGE_MAP(CprimeView, CView)// 標準打印命令ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CprimeView::OnFilePrintPreview)ON_WM_CONTEXTMENU()ON_WM_RBUTTONUP() END_MESSAGE_MAP()// CprimeView 構造/析構CprimeView::CprimeView() {// TODO: 在此處添加構造代碼}CprimeView::~CprimeView() { }BOOL CprimeView::PreCreateWindow(CREATESTRUCT& cs) {// TODO: 在此處通過修改// CREATESTRUCT cs 來修改窗口類或樣式return CView::PreCreateWindow(cs); }// CprimeView 繪制void CprimeView::OnDraw(CDC* pDC) {CprimeDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此處為本機數據添加繪制代碼CString str1;int row=0;int cnt=0;for (int i=2;i<100;i++){if(isp(i)){ cnt = cnt + 1;str1.Format(_T("%d"), i);pDC->TextOut(20+35*((cnt-1)%5), 20+row*30, str1);if( cnt%5==0){row=row+1;} }}cnt = 0;row = 0;for (int i=2;i<100;i++){if(isPrime(i)==1){ cnt = cnt + 1;str1.Format(_T("%d"), i);pDC->TextOut(20+35*((cnt-1)%5), 200+row*30, str1);if( cnt%5==0){row=row+1;} }} }// CprimeView 打印void CprimeView::OnFilePrintPreview() { #ifndef SHARED_HANDLERSAFXPrintPreview(this); #endif }BOOL CprimeView::OnPreparePrinting(CPrintInfo* pInfo) {// 默認準備return DoPreparePrinting(pInfo); }void CprimeView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {// TODO: 添加額外的打印前進行的初始化過程 }void CprimeView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) {// TODO: 添加打印后進行的清理過程 }void CprimeView::OnRButtonUp(UINT /* nFlags */, CPoint point) {ClientToScreen(&point);OnContextMenu(this, point); }void CprimeView::OnContextMenu(CWnd* /* pWnd */, CPoint point) { #ifndef SHARED_HANDLERStheApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE); #endif }// CprimeView 診斷#ifdef _DEBUG void CprimeView::AssertValid() const {CView::AssertValid(); }void CprimeView::Dump(CDumpContext& dc) const {CView::Dump(dc); }CprimeDoc* CprimeView::GetDocument() const // 非調試版本是內聯的 {ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CprimeDoc)));return (CprimeDoc*)m_pDocument; } #endif //_DEBUG// CprimeView 消息處理程序bool isp(int n) {for(int i = 2; i < n; i++){if(n % i == 0) return false;}return true; }int isPrime(int n) {if (n <= 1){return 0;}for (int i = 2; i * i <= n; i++){if (n % i == 0){return 0;}}return 1; }?
總結
以上是生活随笔為你收集整理的0-100之间的素数、判断素数的基本和优化方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存管理单元MMU学习
- 下一篇: GDI对象存储和查看lib文件导出函数