素数的判定
输入一个数,判断是不是素数。#include<stdio.h>
#include<math.h>
main()
{
int a,b,c;
scanf("%d",&a);
{
for(b=2;b<=sqrt(a);b++)
c=a%b;
}
if(c==0) printf("此数为合数");
if(c!=0) printf("此数为素数");
}
有很多明显是合数的,它也判定为素数,请各位大师帮忙看下,该怎么修改?
#define true 1 #define false 0 typedef int BOOL; BOOL isPrime(unsigned long n) { if (n <= 3) { /*首先,1、2、3肯定都是素数,只要不小于1就可以了*/ return n > 1; } else if (n % 2 == 0 || n % 3 == 0) { /*在1、2、3之后能被2和3整除的情况下肯定不是素数了*/ return false; } else { for (unsigned short i = 5; i * i <= n; i += 6) { /*4在上面的elseif中被处理了,5是素数,所以是最小因子了,每次+6都是一个比较“素”的数,不信你加加看……*/ if (n % i == 0 || n % (i + 2) == 0) { /*一个数如果不能被2、3整除,还不能被其它素数整除,那它应该就是一个素数了。*/ return false; } } return true; } }