运用c语言编写程序:判断素数的多种方法

素数是一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数;判断一个数是不是素数只需让2-这个数本身减一的所有数进行相除,如果没有一个数能把这个数本身整出,这个数就是素数.

设判断X;

所以我们可以运用for循环,使得i=2;i<x;i++for(i=2;i<x;i++)

来进行判断  在一个循环中x%1到x-1所有的数,没有一个等于0,这个数就是素数.

判断多个数只需在for循环外再加一个循环即可.

1.判断一个数是否为素数

#include<stdio.h>
int main()
{
	int input = 0;
	scanf("%d", &input);
	int i = 0;
	for (i = 2; i < input; i++)
	{
		if (input % i == 0)
		{
			break;
		}
	}
	if (i >= input)
	{
		printf("%d是素数",input);
	}
	else
	{
		printf("%d不是素数", input);
	}
	return 0;
}

 2.判断100-200中的素数(最简单)

#include<stdio.h>
int main()
{
	int j = 0;
	int i = 0;
	for (j = 100; j <= 200; j++)
	{

		for (i = 2; i < j; i++)
		{
			if (j % i == 0)
			{
				break;
			}
		}
		if (i >= j)
		{
			printf("%d是素数\n", j);
		}
		//else
		//{
		//	printf("%d不是素数\n", input);
		//}
	}
	return 0;
}

运行结果: 

101是素数
103是素数
107是素数
109是素数
113是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数

 3.判断100-200中的素数(改进)

例如16=2*8=4*4,假设一个数X,当X不是素数时,肯定有一个小于等于X/2的数会使得X被整出,从而判断出X不是素数,本例中  2和4都可使16被整除.

#include<stdio.h>
int main()
{
	int j = 0;
	int i = 0;
	for (j = 100; j <= 200; j++)//100的数
	{

		for (i = 2; i < j/2; i++)//判断--只需判断j/2个数即可
		{
			if (j % i == 0)
			{
				break;
			}
		}
		if (i >= j/2)
		{
			printf("%d是素数\n", j);
		}
		//else
		//{
		//	printf("%d不是素数\n", input);
		//}
	}
	return 0;

运行结果:

 101是素数
103是素数
107是素数
109是素数
113是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数

4. 判断100-200中的素数(进一步改进)

例如16=2*8=4*4,这次我们可以看,假设一个数X,当X不是素数时,肯定有一个小于等于根号下X的数会使得X被整出.

#include<stdio.h>
#include<math.h>
int main()
{
	int j = 0;
	int i = 0;
	for (j = 100; j <= 200; j++)//100的数
	{

		for (i = 2; i < sqrt(j); i++)//判断--只需判断根号下j个数即可
		{
			if (j % i == 0)
			{
				break;
			}
		}
		if (i >= sqrt(j))
		{
			printf("%d是素数\n", j);
		}
		//else
		//{
		//	printf("%d不是素数\n", input);
		//}
	}
	return 0;
}

运行结果: 

101是素数
103是素数
107是素数
109是素数
113是素数
121是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
169是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数

5.判断100-200中的素数(进一步改进) 

可知素数一定不会是偶数,对此我们可以把100-200中的偶数去除.

#include<stdio.h>
#include<math.h>
int main()
{
	int j = 0;
	int i = 0;
	for (j = 101; j <= 200; j+=2)//去除掉偶数
	{

		for (i = 2; i < sqrt(j); i++)//判断--只需判断根号下j个数即可
		{
			if (j % i == 0)
			{
				break;
			}
		}
		if (i >= sqrt(j))
		{
			printf("%d是素数\n", j);
		}
		//else
		//{
		//	printf("%d不是素数\n", input);
		//}
	}
	return 0;
}

输出结果:

 101是素数
103是素数
107是素数
109是素数
113是素数
121是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
169是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值