C++一段给我解释下

来源:百度知道 编辑:UC知道 时间:2024/06/29 23:33:50
这个是C++的一个程序: 是求是不是是素数的一个程序
#include <iostream>
using namespace std;
int main()
{int prime(int); /* 函数原型声明 */
int n;
cout<<"input an integer:";
cin>>n;
if (prime(n))
cout<<n<<" is a prime."<<endl;
else
cout<<n<<" is not a prime."<<endl;
return 0;
}

int prime(int n)
{int flag=1,i;
for (i=2;i<n/2 && flag==1;i++)
if (n%i==0)
flag=0;
return(flag);
}
的返回部分:这一段是什么意思:
int prime(int n)
{int flag=1,i;
for (i=2;i<n/2 && flag==1;i++)
if (n%i==0)
flag=0;
return(flag);
}

int prime(int n)
{int flag=1,i;
for (i=2;i<n/2 && flag==1;i++)
if (n%i==0)
flag=0;
return(flag);
}

首先你应该知道判断一个整数是不是素数的方法是什么吧?所谓素数,也就是平常我们说的质数.不过在计算机中,我们要判断一个数是不是素数,基本上采用的方法就是用这个数来除以2--该数的一半,(不过我们也可以从2--该数减1,但是这样是没有必要的),所以这就是设置循环条件i<n/2的原因,另外还需设置一个标志,就是flag,用于在主函数中作为输入是不是素数的条件,所以在prime函数中,若最后返回的是1,则说明这个数是素数;否则所输入的数不是素数.下面再详细一点
int prime(int n)
{int flag=1,i; //设置标志条件,循环变量
for (i=2;i<n/2 && flag==1;i++) //设置循环条件
if (n%i==0)//判断n是不是素数,即判断条件
flag=0; //若n能够被i整除,说明n不是素数,flag置为0
return(flag); //返回
}

int prime(int n)
{
int flag=1,i; 先假设为质数。
for (i=2;i<n/2 && flag==1;i++)由2到n/2循环。
if (n%i==0) 用2~n/2之间的数除n,如果可以整除,那么这个n就是质数了。 %表示求余数。
flag=0;
return(flag); 返回flag,flag=1为质数,flag=0不是质数。
}

从2~n/2之间,只要有任意一个数,能够整除n,那么这个n就不是质数了。
这个函数返回值为,0或者1
0表示这个数不是质数
1表示是质数

格式比较乱而已,仔细看
if (n%i==0)
flag=0;