赞
踩
算法1
对整数n在[2,n-1],中做除法,如果出现能被整除的数,则n为合数,否则为素数。
- #include<stdio.h>
- int IsPrime(int n)
-
- {
- int i;
- for (i = 2;i < n;i++)
- {
- if (n % i == 0)
- break;
- }
- if (i < n)
- return 0;
- else
- return 1;
- }
- int main(void)
- {
- int n;
- printf("请输入一个大于3的整数:\n");
- scanf_s("%d", &n);
- if (IsPrime(n) == 1)
- printf("%d是素数\n", n);
- else
- printf("%d不是素数\n",n);
- return 0;
- }
算法2
只需判断[2,]即可,从而减少循环次数(解释:假设n=xy,则一种情况是x,y中必有一个数小于,而另一个大于,不可能同时小于或者同时大于,第二种情况是x=y=。)只需添加math库和修改部分IsPrinme代码
- #include<stdio.h>
- #include<math.h>
- int IsPrime(int n)
-
- {
- int i;
- for (i = 2;i <=sqrt(n);i++)
- {
- if (n % i == 0)
- break;
- }
- if (i<=sqrt(n))
- return 0;
- else
- return 1;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。