输出100-200之间素数的方法

目录

素数定义

一、打印数字

二、实现并优化代码

总结




素数定义

素数不能被1和自身以外的数整除。


一、打印数字

首先我们使用一个for循环先打印出100-200的数字

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


    }
return 0;
}


二、实现并优化代码

既然素数的定义是整除的我们即可用 a%b==n进行判断

1、

#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
for ( i = 100 ; i <= 200 ; i++)
    {
     int j = 0 ;                          我们这里定义一个就j对i进行一个试除
         for( j = 2 ; j < i ; j++)
           {
              if( i % j == 0)            当 i能被 他之前的数整除的时候那i不是素数我们跳出循环
                 {
                   break:
                  }
           if ( i == j)                  当j一直++到等于i时,只能能被自身整除时我们就打印出i
             {
               count++;
               printf("%d ", i);
              }

    }
  printf("/n count = %d/n" ,count );
return 0;
}

我们为了可以判断自己是否输出正确我们可以引入一个count来计算我们100-200之间的素数个数


这是我们得出的答案,当然如果我们不清楚为什么要 i==j 我们可以再引入一个 flag 来更好的理解

#include <stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 100; i <= 200; i++)
	{
		int j = 0;
		int flag = 1;
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\ncount =%d\n ", count);
	return 0;
}  

我们一开始让 falg = 1 对i进行判断如果i不是素数我们将flag赋值为0,这样下面if进行判断时不能进行下去,如果i是素数我们可以直接对i打印。

让我们来对代码进行简化

我们知道偶数都不是素数,那我们在打印100-200之间的数字时我们可以直接跳过偶数来优化我们的代码

 注意将i重新赋值为101否则会出现

这样我们就可以跳过偶数达到目的 

进一步优化

我们还能对j的值也进行优化,这就要运用到数学知识。

a = c * d,那其中最少有一个数会<= a开根 ,知道这样的话我们就可以将j的范围从 2到 i-1 进一步缩小到根号i来进一步优化我们的代码

那要输入根号我们要使用sqrt,sqrt(i)即为i开根,为了使用sqrt 我们要引入

#include <stdio.h>
#include <math.h>
int main()

{
	int i = 0;
	int count = 0;
	for (i = 101; i <= 200; i+=2)
	{
		int j = 0;
		int flag = 1;
		for (j = 2; j <=sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("\ncount =%d\n ", count);
	return 0;
}

这样我们就进一步的优化了我们的运算速度



总结

我们首先了解题目的目的来打印出100-200之间的数,后面根据素数的定义来完成我们的目的,最后再来优化我们的代码。

这是我第一次发博客,也是我学了c语言第一次这样来分享,我只是个小白要走的路还长 .我一开始是不知道还有这样的优化,也是看了鹏哥的视频知道了有这么多的方法优化代码,鹏哥说的一句话让我感受很深:"我们起初都是小白,只有不断的去看别人写的更好的代码,敲更多的代码,不断的试错我们才能成长,我们代码才能敲的更快,更好。"

猜你喜欢

转载自blog.csdn.net/joke_zz/article/details/121911831