C语言判断数是否为素数与素数输出

目录
  • 1.判断单个数是否为素数(多组输入)
  • 2.输入范围输出范围内的素数
  • 3.总结

素数的概念:素数也叫质数,是一种只能被自己本身和1整除的数并且大于1,当然0与1不是素数。

1.判断单个数是否为素数(多组输入)

我的思路是,首先输入一个数,利用素数的概念来判断是非为素数,是的话输出素数;否则不输出。

关于素数的判断首先我们吧输入的数当初被除数,我选择用一个for循环来实现,从2开始当除数,每轮加1,一直循环去除被除数,一直除到被除数减一那个数,要是期间能被一个数整除则跳出循环不为素数,要是一直没有被整除则输出这个素数。

#include<stdio.h>
int main()
{
	int a=0, j;
	while (scanf_s("%d", &a) != EOF)
	{
		int flag = 1;
		for (j = 2; j < a; j++)
		{
			if (a % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1 && a != 0 && a != 1)//0与1不是素数
			printf("%d为素数。\n", a);
		else
		printf("%d不是素数。\n", a);
	}
	return 0;
}

这里我选择引用一个局部变量flag来当作判断是否为素数的标志,刚刚开始赋值为1,假如被整除了就变为0,最后直接判断flag的值,1为素数;否则不是。

最后代码运行

2.输入范围输出范围内的素数

这个算是上一个例子的高阶版,这个题的我们得解决两个问题:①把这个范围的数全都进行输出②判断输出的数是否为素数,是的话输出否则不输出。

关于问题一我选择用一个for循环来不断输出这个数进行比较,因为输入的是一个范围必定有最大值和最小值,我们可以以最小值为起始数开始循环输出,每次加1,直到加到最大值停止输出。

第二个问题就利用上面例子的思路就可以,把他包括到第一个for循环里面。

代码如下

#include<stdio.h>//输入一个范围,求嘞个范围里面的素数
int main()
{
	int m, n;
	scanf_s("%d %d", &m, &n);//输入一个范围,m为最小值,n为最大值
	for (int i = m; i < n + 1; i++)
	{
		int flag = 1;
		for (int k = 2; k < i ; k++)
		{
			if (i % k == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1 && i != 0 && i != 1)
			printf("%d ", i);

	}
	return 0;
}

最后代码运行

 成功运行

3.总结

对于这个代码我感觉唯一的难点在于对于break的理解,还有素数的概念,还有对于0与1不是素数的判断上。

关于0与1不是素数我运用了相对暴力的做法,我选择在最后flag的判断里面加入对输入的值的判断,只有他不等于0或者1时才为素数否则不是。

到此这篇关于C语言判断数是否为素数与素数输出的文章就介绍到这了,更多相关C语言 素数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言判断一个数是否为素数方法解析

    一.概念介绍 素数又称为质数.一个大于1的自然数(从2开始),除了1和它本身外,不能被其他自然数整除的叫做素数,否则称为合数. 0和1既不是素数也不是合数,最小的素数是2. 二.代码 方法一: bool is_Prime(int num){ int i; for(i = 2;i <= sqrt(num);i++){ if(num % i == 0)//一旦发现有因子,则返回false return false; } return true; } 注意:在for循环判断时不能忘记 i <= sq

  • C语言练习之数组中素数交换

    目录 题目要求 总结 题目要求 (1)在主函数中创建数组num,使用测试数据{108 4 19 7 23 66 49 13 33 35}对其初始化: (2)定义change函数,将num数组中的素数首尾交换,即第一个素数与最后一个素数交换,第二个素数与倒数第二个素数交换-,非素数保持位置不变: (3)定义prime函数,用于素数的判断. #include <stdio.h> #include <math.h> int prime(int num) { int i,k; if(num

  • C语言实现求梅森素数的代码与解析

    问题描述 梅森数(Mersenne Prime)指的是形如2n-1的正整数,其中指数n是素数,即为Mn.如果一个梅森数是素数,则称其为梅森素数.例如22-1=3.23-1=7都是梅森素数. 当n=2,3,5,7时,Mn 都是素数,但n=11时,Mn=M11=211-1=2047=23X89,显然不是梅森素数. 1722年,瑞士数学大师欧拉证明了231-1=2147483647是一个素数,它共有10位数,成为当时世界上已知的最大素数. 迄今为止,人类仅发现了47个梅森素数.梅森素数历来都是数论研究

  • C语言实现统计100以内所有素数的个数

    目录 题目描述 分析 代码实现 运行结果 后期完善 网上参考 本人C语言萌新,最近工作中频频出现C语言小错误,遂决定使用笨方法提高我的C语言水平,坚持每天一个C语言小练习,养成C语言手感,从此让编程成为习惯. 题目描述 统计100以内所有素数的个数 分析 素数(prime number)又称质数,在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,2是最小的素数. 代码实现 #include <stdio.h> #define INTEGER_RANGE 100 //数字范围 i

  • C语言判断数是否为素数与素数输出

    目录 1.判断单个数是否为素数(多组输入) 2.输入范围输出范围内的素数 3.总结 素数的概念:素数也叫质数,是一种只能被自己本身和1整除的数并且大于1,当然0与1不是素数. 1.判断单个数是否为素数(多组输入) 我的思路是,首先输入一个数,利用素数的概念来判断是非为素数,是的话输出素数:否则不输出. 关于素数的判断首先我们吧输入的数当初被除数,我选择用一个for循环来实现,从2开始当除数,每轮加1,一直循环去除被除数,一直除到被除数减一那个数,要是期间能被一个数整除则跳出循环不为素数,要是一直

  • C语言中判断素数(求素数)的思路与方法实例

    目录 前言 思路1实现: 思路2实现: <C与指针>4.14-2: 补充:判断素数的4种方法实例 总结 前言 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数. 思路2):判断方法还可以简化.m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去

  • Go语言判断指定文件是否存在的方法

    本文实例讲述了Go语言判断指定文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main    import (     "fmt"     "os" )    func main() {     f, err := os.Open("dotcoo.com.txt")     if err != nil && os.IsNotExist(err) {         fmt.Pri

  • 使用C语言判断栈的方向实例

    这一问题主要是如何判读出先后入栈的变量的地址大小,比如有a, b两个变量一先一后被定义,如果a的地址大于b的地址,则说明是以低地址方向增长的,反之,往高地址方向增长.在写C程序的时候不能简单直接的定义两个变量来比较它们的地址大小,因为这样很有可能编译器会做优化,最终导致结果不真实.为避免这种编译器优化的情况,可以采用将变量定义到函数中,然后递归调用该函数. 例如下面的代码: #include <stdio.h> static int stack_direction = 0; static vo

  • Go语言判断文件或文件夹是否存在的方法

    本文实例讲述了Go语言判断文件或文件夹是否存在的方法.分享给大家供大家参考,具体如下: Golang 判断文件是否存在有点怪异,是根据在操作文件时返回的错误信息来判断的,而不能直接根据路径判断 版本1: 复制代码 代码如下: func IsExists(path string) (bool, error) {     _, err := os.Stat(path)     if err == nil {         return true, nil     }     if os.IsNot

  • R语言判断语句的使用详解

    判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). 下面是大多数编程语言中典型的判断结构的一般形式: R 语言提供了以下类型的判断语句: if 语句 if...else 语句 switch 语句 if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成. 语法格式如下: if(boolean_expression) { // 布尔表达式为真将执行的语句 } 如果布尔表达式 boolean_expression

  • GO语言判断一个网段是否属于另一个网段的子网

    目录 1.校验网段是否合法 1.1函数 1.2分析 1.3主函数运行测试 2.校验ip是否合法 2.1函数 2.2分析 2.3主函数运行测试 3.判断两个网段,一个是否是另一个的子网 3.1函数 3.2分析 3.3运行测试 1.校验网段是否合法 1.1函数 import (     "fmt"     "net" ) func IsNetWorkOk(network string ) bool{     _, _, err := net.ParseCIDR(netw

  • 利用go语言判断是否是完全二叉树

    目录 一.什么是完全二叉树? 二.流程 三.代码 1.树节点 2.测试代码 3.判断树是否为完全二叉树代码 4.代码解读 5.运行结果 一.什么是完全二叉树? 先看如下这一张图: 这个一颗二叉树,如何区分该树是不是完全二叉树呢? 当一个节点存在右子节点但是不存在左子节点这颗树视为非完全二叉树 当一个节点的左子节点存在但是右子节点不存在视为完全二叉树 如果没有子节点,那也是要在左侧开始到右侧依次没有子节点才视为完全二叉树,就像上图2中 而上面第一张图这颗二叉树很明显是一颗非完全二叉树,因为在第三层

  • 使用c语言判断100以内素数的示例(c语言求素数)

    从console输入一个数,判断这个数是否为素数(质数). 复制代码 代码如下: #include <stdio.h> /**判断100以内的素数*/ //定义函数判断是否是素数int isPrime(int num ){    int i;    //从2开始循环,一直到i的平方小于等于给定的数.    for (i = 2; i*i <= num; i++) {        if ( ( num % i ) == 0 ) {            return 0;       

随机推荐