质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)
思路1:判断一个数n是不是素数从2开始到n-1去和它求余,如果出现余数为0,则代表这个数不是素数;如果从2开始到n-1结束没有余数为0的情况,则此数为素数,所以要写成循环的形式;这里数字1要单独处理一下。
代码如下:
int is_prime(int n)
{
int j = 2;
for (j = 2; j < n - 1; j++)
{
if (n % j == 0)
{
return 0;
}
}
return 1;
}
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n > 1)
{
if (is_prime(n) == 0)
{
printf("%d不是素数 ", n);
}
else if (is_prime(n) == 1)
{
printf("%d是素数 ", n);
}
}
else
{
printf("%d不是素数", n);
}
return 0;
}
思路2:一个数n如果不是素数就可以分解成两个因子相乘的形式,这个数总有一个因子是小于等于sqrt(n)(如16=2*8=4*4,那么2和4这两个因子就是小于等于sqrt(16)。这个代码整体思路不变,只是将j的条件判断部分换了一下
代码如下:
#include<math.h>
int is_prime(int n)
{
int j = 2;
for (j = 2; j <= sqrt(n); j++)
{
if (n % j == 0)
{
return 0;
}
}
return 1;
}
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n > 1)
{
if (is_prime(n) == 0)
{
printf("%d不是素数 ", n);
}
else if (is_prime(n) == 1)
{
printf("%d是素数 ", n);
}
}
else
{
printf("%d不是素数", n);
}
return 0;
}