使⽤C语⾔--判断素数的两种⽅法
质数也称素数
只有1和它本⾝⼀对因⼦的数为素数
⽅法⼀:
假设输⼊值为n,如果n能模上2到n-1范围的其中⼀个数,则这个数⼀定不是素数。
⽽判断素数也相当于⼀个数因⼦的过程,因为⼀个数的因⼦只可能⼩于等于它本⾝的⼀半所以可以将2到n-1范围减半,或者⽤fabs()开根号函数缩⼩整模的范围达到提⾼程序效率
#include<stdio.h>
int main()
{
int n, i, flag=1;//flag=1为素数的⼀种标志
printf("请输⼊需要判断的数:\n");
scanf("%d", &n);
for (i = 2; i < n; i++)// i<n可改为 i<n/2 或者 i<fabs(n) 提⾼效率
{
if (n % i == 0)
{
flag = 0;//如果n能模上2到n-1的某个数则flag发⽣改变,n不是素数
printf("%d不是素数\n", n);
break;
}
}
if (flag)
{
printf("%d是素数\n", n);
}
return 0;
}
⽅法⼆:
素数为1,2,3,5,7,11,13,17,19~等等的数
通过研究观察发现所有偶数中只有2是唯⼀的素数,因此输⼊的值如果是其他偶数,或者能整模奇数的都不是素数#include<stdio.h>
int main()
{
int n, i;
scanf_s("%d", &n);
if (n == 2)
printf("%d是素数\n", n);//2是素数中唯⼀的偶数
else if (n % 2 == 0)
{
printf("%d不是素数\n", n);//输⼊数是2以外的其他偶数情况
return 0;
}
for (i = 3; i <= n / 2; i += 2)
{
c++判断素数
if (n % i == 0)
{
printf("%d不是素数\n", n);//输⼊数能整模奇数的情况
return 0;
}
else
{
printf("%d是素数\n", n);//不能整模奇数的情况就是素数
return 0;
}
}
}