输入一个正整数,判断其是否为素数

素数的定义:
素数(prime number)又称质数,有无限个。
素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为素数。

问题:
给出一个正整数(n>0),怎么判断是否为素数?

问题分析:
先考虑特殊情况,如果n=1或者n=2,我们很容易根据定义得出1不是素数,2是素数。
然后考虑n>=3的情况,如果对于2~(n-1)之间的每一个整数,n都不可以整除,那么根据定义这就能保证这是一个素数。
这里可以用for循环一个一个来检查2~(n-1),如果遇到可以整除就用(break;)语句跳出for循环,那么证明这个数不是素数。
如果一直到检查到最后一个,仍然没有被整除,那么它就是一个素数。

解决方案(c++):
#include "stdafx.h"
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{   int m,n;
     cin>>n;
       if(n==1)                  //首先考虑特殊情况。
	   cout<<n<<"不是素数"<<endl;
       if(n==2)
	   cout<<n<<"是素数"<<endl;
     for(m=2;m<n;m++)      //用for循环一个一个检查2-(n-1)是否都能被n整除。
	{
	    if(n%m==0)        //但凡有一个可以被整除的,就证明它不是素数,就可以结束for循环。
	        { 
                      cout<<n<<"不是素数"<<endl;
		      break;
		 }
	     if(m==n-1)      //如果检查到最后一个(n-1),仍然没有被n整除,那么这是个素数。
		 cout<<n<<"是素数"<<endl;
       }
    system("pause");	  
	return 0;
}
 
 



 
 


 

猜你喜欢

转载自blog.csdn.net/csdn123acm/article/details/77800448