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

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
#endif

bool isp(int );
int isPrime(int );

// CprimeView

IMPLEMENT_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_HANDLERS
	AFXPrintPreview(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_HANDLERS
	theApp.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之间的素数判断素数的基本和优化方法的主要内容,如果未能解决你的问题,请参考以下文章

判断101-200之间有多少个素数,并输出所有素数

ECC

代码实现:判断101-200之间有多少个素数(质数),并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

如何找到 0 - 100 之间的素数?

判断素数

C语言中素数的判断方法