当前位置:   article > 正文

C语言打印出0~n之间的所有素数的代码及其优化代码和思想_c++输出 0~n的素数,每行一个

c++输出 0~n的素数,每行一个

打印0~n之间的素数

代码如下所示:

#include<stdio.h>
void Isprime(int n)
{
	int i,j;
	for (i = 2; i <= n; i++)//产生了2~n个的数字,因为1不
	{
		for (j = 2; j <= i; j++)//若i是素数,在2~(i-1)中i对任何数取余都不等于0
		{
			if (i%j == 0)
			{
				break;//表示i不是素数就没必要在往下取余了,直接跳出该循环,i++,进行下一个数的判断就好了
			}
		}
		if (j>=i)
		{
			printf("%d\t", i);
		}
	}
}
int main()
{
	int a = 0;
	printf("请输入你要打印到多少的素数:");
	scanf("%d", &a);
	Isprime(a);
	printf("\n");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

例如答应0~300之间的素数结果如下图所示:
在这里插入图片描述
打印素数的优化代码1:
优化思想:例如 :9=1x9或者9=3x3;
8=2x4或者8=1x8…
n=axb;会发现其中有个因数a或者b一定是小于或者等于n/2的
所以优化代码如下:

#include<stdio.h>
void Isprime(int n)
{
	int i,j;
	for (i = 2; i <= n; i++)//产生了2~n个的数字
	{
		for (j = 2; j <= i/2; j++)//若i是素数,在2~(i/2)中i对任何数取余都不等于0
		{
			if (i%j == 0)
			{
				break;//表示i不是素数就没必要在往下取余了,直接跳出该循环,i++,进行下一个数的判断就好了
			}
		}
		if (j>i/2)
		{
			printf("%d\t", i);
		}
	}
}
int main()
{
	int a = 0;
	printf("请输入你要打印到多少的素数:");
	scanf("%d", &a);
	Isprime(a);
	printf("\n");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

打印素数的优化代码2:
优化思想:例如 :9=1x9或者9=3x3;3是等于根号9的
8=2x4或者8=1x8.;2小于根号8的…
n=axb 会发现其中有个因数a或者b一定是小于或等于根号n的
注意:sqrt()函数是在<math.h>的头文件里,并且是double类型的
所以优化代码如下:

#include<stdio.h>
#include<math.h>
void Isprime(int n)
{
	int i,j;
	for (i = 2; i <= n; i++)//产生了2~n个的数字
	{
		for (j = 2; j <=sqrt((double)i); j++)//若i是素数,在2~(根号i)中i对任何数取余都不等于0
		{
			if (i%j == 0)
			{
				break;//表示i不是素数就没必要在往下取余了,直接跳出该循环,i++,进行下一个数的判断就好了
			}
		}
		if (j>=sqrt((double)i))
		{
			printf("%d\t", i);
		}
	}
}
int main()
{
	int a = 0;
	printf("请输入你要打印到多少的素数:");
	scanf("%d", &a);
	Isprime(a);
	printf("\n");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

还有一种优化思想是去掉偶数项,因为偶数一定不是素数哦
自己可以试着写一写哦,加油哦

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/328856
推荐阅读
相关标签
  

闽ICP备14008679号