首页 > 其他分享 >关于C语言中素数的求解

关于C语言中素数的求解

时间:2024-08-04 10:28:22浏览次数:16  
标签:200 求解 int C语言 素数 100 include

什么是素数?

一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数。(素数=质数)

在C语言中求解素数的几种方法。

方法一:直接试数法(从1开始逐一试数)

例:求解100到200之间的素数。

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

效果如下:

此方法逻辑是从2开始到i结束逐一检验看中间是否有能够被j整除的(其中j为2到i之间的自然数)

方法二:利用中间量转换求解

例:求解100到200之间的素数。

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

			if (i % j == 0)
			{
				num = 0;

			}
		}
		if (num == 1)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
}

效果如下:

此方法引入了num作为中间量,如果 i能整除j那么num为0就不是素数不打印i,如果 i不能整除j那么num为1就是素数打印i

方法三:利用sqrt函数开平方简便计算

例:求解100到200之间的素数。

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	int  count = 0;
	
	for (i = 100; i <= 200; i++)
	{
		int j = 0;
		int num = 1;
		for (j = 2; j <= sqrt(i); j++)
		{

			if (i % j == 0)
			{
				num = 0;

			}
		}
		if (num == 1)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
}

效果如下:

此方法利用sqrt函数将i开平方用来简便计算(需要引用头文件math.h)

优化:

红色标记出可以直接跳过100到200之间的偶数从而简便运算,效果不变

标签:200,求解,int,C语言,素数,100,include
From: https://blog.csdn.net/xiaofengcanyueya/article/details/140902226

相关文章

  • 筛选质数的三个方法:1.素数判断,2埃氏法,3欧拉法。
    文章目录前言一、素数是什么?二、算法使用原理1.合数:合数除了1和它本身以外,还有其他因数。与素数相对,素数只有1和它本身两个因数,而合数则至少有三个因数。2.我们理解了合数的概念后,可以知道一个合数可以由至少三个因数构成如,6=1*2*3,说明所有素数的倍数都可以是合数,那么我......
  • C语言关于函数的基本介绍
    目录一、前言二、为什么需要函数?三、什么是函数?四、函数的作用及分类。五、函数的基本用法。六、主函数的简单介绍。七、函数原型以及一些常用的系统函数的介绍。一、前言    这些都是作者学习C语言过程中了解到的只是,有的地方可能不是写的特别清楚,同时这也是......
  • 【C语言】C语言期末突击/考研--函数
    目录一、函数的声明与定义-嵌套调用1.1.函数的声明与定义1.2.函数的分类与调用二、函数的递归调用三、局部变量与全局变量3.1.全局变量解析形参实参解析3.2.局部变量与全局变量四、练习题及解析一、函数的声明与定义-嵌套调用1.1.函数的声明与定义    函数间......
  • 【C语言】字符函数和字符串函数详解
    ......
  • 【C语言】结构体内存布局解析——字节对齐
    ......
  • PAT 乙级 真题练习 1013 数素数
    问题描述:题目描述:1013数素数分数20  作者 CHEN,Yue  单位 浙江大学令Pi​表示第i个素数。现任给两个正整数M≤N≤104,请输出PM​到PN​的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM​到PN​的所有素数,每10......
  • C语言:动态内存管理
    动态内存管理一、动态分配内存的必要性普通内存分配动态内存分配二、动态内存分配函数(一)malloc(二)calloc(三)realloc(四)free三、常见的错误(一)对空指针进行解引用操作(二)对动态分配空间越界访问(三)free释放动态分配空间的一部分(四)动态开辟内存忘记释放四、柔性数组(一)柔性数组......
  • C语言基础8数组
    什么是数组数组是相同类型,有序数据的集合。数组的特征数组中的数据被称为数组的元素,是同构的数组中的元素存放在内存空间里  衍生概念:下标(索引)下标或索引代表了数组中元素距离第一个元素的偏移位置数组中元素的地址值,下标越大,地址值越大。(每一块内存空间都有一个独有的......
  • C语言基础7循环结构
    什么是循环        代码的重复执行,就叫做循环。循环的分类无限循环:程序设计中尽量避免无限循环。(程序中的无限循环必须可控)有限循环:循环限定循环次数或者循环的条件循环的构成循环体循环条件当型循环的实现while语法:while(循环条件){循环语句;}......
  • C语言基础6分支结构
    分支结构分支结构:又被称之为选择结构概念选择结构:根据条件成立与否,选择相应的操作条件建构关系表达式:含有关系运算符的表达式(<,>,>=,<=,!=,==)逻辑表达式:含有逻辑运算符的表达式(&&,||,!),往往用来构建复杂的符合条件:比如:常量/变量:值是否非0,取值(0|1)注意:类似以下写法,没有意义......