for循环怎么实行的
发布网友
发布时间:2022-05-10 18:03
我来回答
共3个回答
热心网友
时间:2023-10-20 16:57
程序问题首先是一个算法问题,要判断n是否为素数,只要看这个数能否被1到N之间的所有数当中的任何一个数整除。如果能,即不是,反之就是了。
当然更为简单的算法是,只要判断这个数能否被1到根号N之间的所有数当中的任何一个数整除。为什么这样可以?因为任何一个数只要能被分解成两个整数相乘的形式,那么其中必有一个整数小于等于根号N。
那么算法可以这样设计:
1、for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
break;
}
}
用2到sqrt(n)之间的所有数一个一个的去除N,如果有任何一个数能够整除N,那么返回假,并且退出循环。
2、这时,楼主可能要问,那么如何判断其真为素数呢?
试想一下,若其真为素数,循环肯定不会停止,一直除下去,直到i=sqrt(n).所有这个时候i的值就派上用场了。
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
break;
}
if(i>=sqrt(n)) /*此条件语句为关键所在,表明循环已经到底*/
return true;
}
热心网友
时间:2023-10-20 16:58
1.修改for (int i=2;i<=sqtn;++i)改为
for (int i=2;i<=sqrt(n);++i)
2.实际执行:
for (int i=2;i<=sqrt(n);++i)
{
if(n%i==0)return false;//这是一条语句!!!
}
return true;
}
3.Note
当for循环中循环体为一条语句时,花括号可省略
循环执行:先赋值int i=2,再判断i<=sqrt(n),满足条件执行循环体(花括号),此后由++i取代赋值,不断重复上述过程,直至条件不满足跳出循环体,按顺序结构执行后面的(花括号后面的)
热心网友
时间:2023-10-20 16:58
这是个算素数的程序,方法传进一个参数,然后取他的平方根,用它去从2开始除,一直除到他的平方根,期间如果有能模开的,返回false,否则返货true,代表他是素数