prime.cpp

来自「Thinkinc++English 电子书籍,英文版」· C++ 代码 · 共 67 行

CPP
67
字号
// Prime.cpp : Implementation of CPrime
#include "stdafx.h"
#include "Simple17.h"
#include "Prime.h"

/////////////////////////////////////////////////////////////////////////////
// CPrime


STDMETHODIMP CPrime::GetNext(long *pVal)
{
	while(1)	// 开始计算 m_nNow 以后的第一个素数
	{
		m_nNow ++;

		for( long i = 2; i<m_nNow; i++ )
		{
			if( m_nNow % i == 0 )	break;	// 能够被整除,则不是素数
		}
		if( i == m_nNow )	break;	// 找到了素数,停止计算
	}

	*pVal = m_nNow;
	m_bDirty = true;	// 内部数据已经修改

	return S_OK;
}
// IPersist
STDMETHODIMP CPrime::GetClassID(/*[out]*/CLSID * pClassID)
{
	*pClassID = GetObjectCLSID();
	return S_OK;
}
// IPersistStream
STDMETHODIMP CPrime::IsDirty(void)
{
	if( m_bDirty )	return S_OK;
	else			return S_FALSE;
}

STDMETHODIMP CPrime::Load(/*[in]*/IStream *pStm)
{
	return pStm->Read( &m_nNow, sizeof(long), NULL);
}

STDMETHODIMP CPrime::Save(/*[in]*/IStream *pStm,/*[in]*/BOOL fClearDirty)
{
	if( fClearDirty )	m_bDirty = false;
	return pStm->Write( &m_nNow, sizeof(long), NULL );
}

STDMETHODIMP CPrime::GetSizeMax(/*[out]*/ULARGE_INTEGER *pcbSize)
{
	pcbSize->LowPart = sizeof(long);
	pcbSize->HighPart = 0;

	return S_OK;
}

// IPersistStreamInit
STDMETHODIMP CPrime::InitNew(void)
{
	m_nNow = 0;
	m_bDirty = true;

	return S_OK;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?