c语言学习:[1]判断一个数是否为素数
用c语言判断一个数是否为素数的几种方法。所用编程环境Microsoft Visual C++。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数,也叫质数。
![c语言学习:[1]判断一个数是否为素数](https://exp-picture.cdn.bcebos.com/586bfdefe0781431809561d8dc6699cf035362bb.jpg)
工具/原料
Microsoft Visual C++ 6.0
While语句
#include<stdio.h>
void main()
{
int i,n;
printf("请输入n:");
scanf("%d",&n);
i=2;
while(i<n)
{
if(n%i==0)
break;
i++;
}
if(i==n)
printf("%d is prime\n",n);
else
printf("%d is no prime\n",n);
}
输出结果如下图:
![c语言学习:[1]判断一个数是否为素数](https://exp-picture.cdn.bcebos.com/31097f43d7d4483176c8a513d40f822b75ee51bb.jpg)
比较容易理解的思路
#include<stdio.h>
void main()
{
int n,r,i;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{
r=n%i;
if(r==0) break;
}
if(i>=n)
printf("yes\n");
else
printf("no\n");
}
输出结果如下图:
![c语言学习:[1]判断一个数是否为素数](https://exp-picture.cdn.bcebos.com/4a594f2c8cf1d8a75a101b3046e34b2c57ee47bb.jpg)
初等数论法的思路
初等数论,一个整数不能整除他的平方数之内的整数就是素数。
编程代码
#include <stdio.h>
#include <math.h>
#define YES 1
#define NO 0
int IsPrime(int N)
{
int i, j;
if (N == 2)
return YES;
else
if (N < 2 || N % 2 ==0)
return NO;
else
{
j = (int)sqrt(N + 1);
for (i = 3; i <= j; i = i + 2)
if (N % i == 0)
return NO;
}
return YES;
}
void main()
{
int N;
printf("Please input a number: ");
scanf("%d", &N);
if (IsPrime(N) == YES)
printf("%d is a prime number\n", N);
else
printf("%d is not a prime number\n", N);
}
输出结果如下图:
![c语言学习:[1]判断一个数是否为素数](https://exp-picture.cdn.bcebos.com/4a6d48ee7b7f860eff56b64077f5ee0d3bcebebb.jpg)