素数的判定
输入一个数,判断是不是素数。#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("此数为素数");
}
有很多明显是合数的,它也判定为素数,请各位大师帮忙看下,该怎么修改?
2017-04-24 16:07
程序代码:
#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;
}
}

2017-04-24 16:34
程序代码:#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("此数为素数");
}
2017-04-24 16:37


2017-04-24 16:57
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;
}

2017-04-24 16:59



2017-04-24 17:00

2017-04-24 17:53