发布网友 发布时间:2022-04-21 20:14
共1个回答
热心网友 时间:2023-05-08 12:49
for(i=2;i<data;i++)
if(data%i!=0)
cnt++;//素数的个数
else
break;
你这样肯定是不行的。
这样只要找到一个不能整除的数,就判断为了素数,比如data为9,你循环到2,9%2!=0,那么你cnt++了
下面这个算法是对的。
for(i=2;i<=half;i++)
if(data%i==0)
break;
//说明从2到data/2
中间存在一个可以整除data的数,那么不是素数。
if(i>half)
{xx[n]=data;n++;} //i>half
说明循环到
data/2都没找到一个可以整除的
数,那么这个数就是素数了