用VC++求素数

来源:百度知道 编辑:UC知道 时间:2024/07/07 12:41:52
这里是我找的一段代码
#include <iostream.h>
int prime(int n)
{
int flag=1;
for(int i=2;i<n;i++)
if(n%i==0) {flag=0;break;}
return flag;
}

void main()
{
int x;
cin>>x;
if(prime(x)) cout<<"是素数";
else
cout<<"不是素数";

}

看完这段代码以后,我茫然了,请大虾帮忙解释下被调函数里的,判断的逻辑是什么,我蒙了。。。

首先你要知道,所谓素数就是除了1和它本身外,不能被别的数整除,例如2、3、5、7、11、13等等。
for(int i=2;i<n;i++) 所以这里它从2开始一直检验到它本身(其实到n的开方就可以了,不用到n的)。
if(n%i==0)就是用来试除1以后的数的。等于0时,被整除,就不是素数了。
{flag=0;break;} 如果被整除,就把flag变成0,break跳出循环就可以了,原因是没必要继续了。
之所以把flag变成0,是因为prime(x) 为0了,所以if(prime(x)) 就为假(1为真,0为假)就执行了else 里的内容了,要是flag保持1不变,说明没有没整除,就执行cout<<"是素数"; 了。