#include<math.h>
int prime(int m)
{int i,k,z;
k=sqrt(m);i=2;
while(i<k/2) i++;
if(k%i==0)z=1;
else z=0;
return z;}
#include<stdio.h>
int main()
{int i;int prime(int m);
for(i=100;i<200;i++)
if(prime(i))printf("%d\n",i);
return 0;
}
代码逻辑稍微有点问题,修改了一下,如下:
#include <stdio.h>
#include<math.h>
int prime(int m)
{
int i,k,z=1;
k=sqrt(m);
i=2;
while(i<=k){ //如果m能被2到m平方根 之间的数整除,说明不是素数,否则是素数
if(m%i==0)
z=0;
i++;
}
return z;
}
int main()
{
int i;int prime(int m);
for(i=100;i<200;i++)
if(prime(i))printf("%d\n",i);
return 0;
}
int prime(int m)
{
int i,k,z;
k=sqrt(m);
i=2;
while(i<=k)
{
if(m%i==0)return 0; //不是素数直接返回,不用继续算。
i++;
}
return 1;
}
供参考:
int prime(int m)
{
int i, k, z;
k = (int)sqrt(m); i = 2;
while (i <= k) { //while (i < k / 2) i++;
if (m % i == 0) return 0; //if (k % i == 0)z = 1;
i++;
} //else z = 0;
return 1;
}