判断素数的方法
素数:指整数在大于1的自然数中,除了1和本身外,无法被其他自然数整除。简而言之,素数只能被1和它本身整除
方法一:
#include <stdio.h>
#include <windows.h>
#pragma warning(disable:4996)
int main()
{
int data, i;
printf("Please Enter:");
scanf("%d", &data);
for (i = 2; i < data; i++)
if (data%i == 0)
break;
if (i == data)
printf("This is a prime.");
else
printf("This is not a prime.");
system("pause");
}
方法二:用函数实现
因为因子都是对称出现,故可将代码优化,只需要遍历一半的数字,不用将所有数字都判断;在此基础上又发现数字,数值最接近的一对因子的最小值为数字开平方后的值,因此也只需遍历开平方后的数字,这样使代码也变得更加有效
例如:12=1×12=2×6=3×4
=4×3=6×2=12×1
#include <stdio.h>
#include <Windows.h>
#pragma warning(disable:4996)
int IsSu(int x)
{
int i = 2;
//for(;i<=(int)sqrt((double)x);i++)
for (; i < x/2; i++){
if (x % i == 0){
return 0;
}
}
return 1;
}
int main()
{
int data=0;
printf("Please Enter data:\n");
scanf("%d", &data);
if (IsSu(data)==1){
printf("%d:是素数\n", data);
}
else{
printf("%d:不是素数\n", data);
}
system("pause");
return 0;
}