日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

0-100之间的素数、判断素数的基本和优化方法

發布時間:2025/4/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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語言輸出一下;
?

#include "stdafx.h" #include<stdio.h>int main(){ int a;int i;int count=0; int isprime=1; //a是素數 for(a=2;a<100;a++){for(i=2;i<a;i++){if(a%i==0){isprime=0;break; } } if(isprime==1){count++;printf("%d\t ",a); //水平制表符if(count%5==0){printf("\n"); //換行符 }}isprime=1;} return 0; }

根據素數定義直接來的判斷是否是素數的算法;

?
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之间的素数、判断素数的基本和优化方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。