关于查找质数的方案。

什么是质数:“质数又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。质数的约数只有两个,1和它本身。

例如:2、3、5、7、11、13等。

方法一:

        没有新定义一个判断符,而是直接通过for语句的自加,如果最后 j 能自加能等于 i ,则证明 j++ 过程中没有经历 if (i % j == 0) 和 break,也就是说没有提前结束循环。所以输出的 i == j 为质数。

#include<stdio.h>
int main()
	//判断1~100以内的质数
{
	int i,j;
	for(i = 1;i<100; i++)
	{
		for(j = 2;j < i; j++)
		{
			if(i % j == 0)//如果i能被j给整除,则证明i能被除了1和它本身以外的数给整除,i就不是一个质数
			{
				break;//跳出循环
			}
		}
		if(j == i)//如果最后j自加能变成和i一样大的数则说明在j++循环过程中一直没有经过上面if判断,则可以证明i是一个质数
			printf("%3d",i);
	}

	printf("\n");
	return 0;
}

运行结果如下:

方法二:

        通过在第一层for循环语句中定义一个新的判断符 int flag = 0 ,在内循环的 if 判断语句中,如果 flag = 1;则证明 i % j == 0,进入了这个 if 改变了 flag 的值,那么就说明当前 i 不是质数。

        如果用定义新判断符的方法,需要在第一层 for 循环的时候将 i 的最小值定义为2,因为如果将 i 的值 1 的话,i 都不大于 j 都不会进入第二层 for 循环,flag 一定等于 0 ,所以输出的时候会多输出一个 1 。

#include<stdio.h>
int main()
	//判断1~100以内的质数
{
	int i,j;
	for(i = 2; i < 100; i++)
	{
	    int flag = 0;//额外定义一个flag = 0
		for(j = 2; j < i;j++)
		{
			if(i%j == 0)//如果进入if语句则可以判断出当前i不是质数
			{
				flag = 1;  //进入后令flag = 1;
				break;
			}
		}
	if(flag == 0)//如果程序运行到这里flag==0,则证明当前i没有进入上面if语句,当前i为质数
	    { 
		printf("%4d",i);
	    }
	}
    printf("\n");
	return 0;
}

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值