素数的判定
输入一个数,判断是不是素数。#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; } }
#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("此数为合数"); break; }//如果放在外面,c取的是循环最后一个a%b的余数,就会 出现漏判 } } if (c != 0) printf("此数为素数"); }
http://bbs.bccn.net/thread-430387-1-1.html
#include "stdio.h" int main(){ int a,b,c; printf("请输入一个数字:\n"); while(scanf("%d",&a)){ for(b=2;a%b;b++); //注意此处末尾有个分号 if(a==b) printf("%d是素数。\n",a); else printf("%d不是素数!\n",a) ; } return 0; }