素数的判断

素数(又称 质数):
就是除了1和它本身,没有其他因数的 整数
注:1既不是 素数,也不是合数。

一、素数的一种简单算法(C)

素数即只能被1和其本身整除的数,判断n是否为素数只需用2~n/2之间的数去除就可以了。因为一个数的一半的平方大于其本身是从5开始的,解方程:n/2的平方>n 。即一个数n的两个因数不能同时比n/2大。就可以说一个数若不是 素数则一定在2~n/2之间有因数。而且2,3也是符合下面程序的。
#include <stdio.h>
main(){
int i,j,k=0;
for(i=2;i<=1000;i++)
{
for(j=2;j<=i/2;j++)
if(i%j==0)break;
if(j>i/2)
{
printf("%d ",i);
}
}}
二、
例如 17是 素数,因为它不能被2~16间
任意一 整数整除。因此判断一个 整数m是否为 素数,只需用2~m-1之间的每一个 整数去除,如果都不能被整除,那么m就是一个素数。
其实可以简化,m不必被2~m-1之间的每一个 整数去除,只需被2~根号m之间的每个数去除就可以了。例如判别17是否为 素数,只需使2~4之间的每一个整数去除。为什么可以做如此简化呢?因为如果m能被2~m-1之间任意 整数整除,如果这个数大于根号m,那这个数必定对应的还有一个比根号m小的因子(以16为例,2、8是它的因子,8大于4,2小于4)。
#include<stdio.h>
#include<math.h>
int main()
{	int n,mark=1;
	scanf("%d",&n);
	if(n==1)
		mark=0;
	int j=(int)sqrt(n);
	for(int i=2;i<=j;i++)
		if(n%i==0)
		{
			mark=0;
			break;
		}
	if(mark)
		printf("%d是一个素数\n",n);
	else
		printf("%d不是一个素数\n",n);
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paidream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值