如果一个数是素数,只要判断他是否能被2到这个数的开方之间的数整除就行了。
int flag=0
if(m==2){ //先判断是不是2
flag=1
}
else{
for(int i=2i<=sqrt(m)i++){
flag=1
if(m%i==0){ //不是素数
flag=0
break
}
}
}
return (flag==1)?m:-1//判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数
如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。
#include <stdio.h>#include <math.h>
int isprime(int n) {//n为素数时,返回1,否则返回0
int i,flag = 1
if(n < 2) return 0
for(i = 2 i <= sqrt(n) && flag ++i) flag = (n%i)
return flag
}
int main() {
int n,cnt = 0
printf("100 ~ 1000之间的素数有:\n")
for(n = 100 n < 1000 ++n) {
if(isprime(n)) {
++cnt
printf("%d\t",n)
if(cnt && (cnt%10 == 0)) printf("\n")
}
}
if(cnt%10) printf("\n")
return 0
}