【C语言】判断一个数是否为素数

这篇具有很好参考价值的文章主要介绍了【C语言】判断一个数是否为素数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

判断一个数是否为素数

方法1 

方法2   

2.1

2.2

进阶:输出区间长度内的素数


判断一个数是否为素数

素数和质数没有区别,素数又叫质数,质数是指在大于1的自然数中,除了1和它本身以外,不能被其他自然数整除的数。比1大但不是素数的数称为合数,1和0既非素数也非合数。”

所谓素数,是指除了1和其本身外,不能被其它任何整数整除的正整数,2是最小的素数。

现在,用户输入一个整数,判断它是否为素数


方法1 

是指除了1和其本身外,不能被其它任何整数整除的正整数

for循环遍历2~输入的数值num,num对这些数取余(求模),余数是0代表能整除,代表不是素数,如果不是素数,标志位置1,跳出循环判断标志位的状态即可

#include <stdio.h>

int main(void) {
	int i, j;
	int num;
	char flag = 0;	//0代表是素数,1代表不是
	scanf("%d", &num);	//输入

	for (i = 2; i < num; i++) {
		if (num % i == 0) {	//如果能整除,标志位置1
			flag = 1;
		}
	}

	if (flag == 1)	//判断标志位即可知是否为素数
		printf("%d不是素数\n", num);
	else
		printf("%d是素数\n", num);
	return 0;
}

方法2   

当一个数不是质数时,必定存在两个约数,一个大于等于sqrt(n),另一个小于sqrt(n)。利用这种特性,可以对方法1进行改进,只判断数n能否被小于sqrt(n)的数整除。

小于平方根和大于平方根的部分是一一对应的,因而可以只判断从2到平方根的数字是否都能被整除即可。

2.1

#include <stdio.h>
#include <math.h>

int main() {
	int num, k, i;
	char flag = 0;
	scanf("%d", &num);

	k = sqrt(num);	//先开平方,减小运算量
	for (i = 2; i <= k; i++) {
		if (num % i == 0) {
			flag = 1;
			break;	//只要有能整除的数,就跳出循环判断,减小运算量
		}
	}

	if (flag == 1)	//判断标志位即可知是否为素数
		printf("%d不是素数\n", num);
	else
		printf("%d是素数\n", num);
	return 0;
}

2.2

#include <stdio.h>
#include <math.h>

int main() {
	int m, k, i;
	scanf("%d", &m);

	k = sqrt(m);
	for (i = 2; i <= k; i++) {
		if (m % i == 0)    //只要有能整除的数,就跳出循环判断,减小运算量
			break;
	}
	
	if (m >= 2) {
		if (i > k)
			printf("%d is a prime.", m);
		else
			printf("%d is not a prime.", m);
	} else
		printf("%d is not a prime.", m);
	return 0;
}

进阶:输出区间长度内的素数

比如打印1000到2000内的素数

#include <stdio.h>

int main() {
	int i = 1000;
	while (i <= 2000) {
		int flag = 0;
		int j = 2;

		while (j < i) {
			if (i % j == 0) {
				flag += 1;
			}
			j = j + 1;
		}
		if (flag == 0) {
			printf("%d\n", i);
		}
		i = i + 1;
	}
	printf("\n");
	return 0;
}

 用函数封装一下,直接调用这个函数即可输出素数文章来源地址https://www.toymoban.com/news/detail-440485.html

#include <stdio.h>

void prime(int x, int y) // 区间(x,y)
{
    int num; // 当前判断的数
    char flag = 0;
    // 外层循环,遍历区间(x,y)内的数
    for (int j = x; j <= y; j++)
    {
        num = j;

        // 内层循环,判断当前数,是否为素数
        for (int i = 2; i < num; i++)
        {
            if (num % i == 0) // 能整除,就不是素数
            {
                flag = 1;
                break; // 跳出内层循环,遍历下一个数
            }
        }

        if (flag == 0)
            printf("%d\n", num);

        flag = 0; // 在判断下一个数之前,先把标志位置0
    }
}

int main()
{
    prime(1000, 2000);
}

到了这里,关于【C语言】判断一个数是否为素数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言判断一个数是否为素数的三种方法(详细)

             今天我们来使用C语言来实现判断一个数是否为素数,首先我们需要了解到素数的概念,素数就是只能被1和它本身整除的数。             这是第一种代码,我们来分析一下,首先创建变量i和n,这里我们i用于循环,n用来存放我们输入的数字。之后我们设置一个

    2024年04月25日
    浏览(60)
  • 判断一个数是否是素数(Java版)

    目录 素数的定义 求解素数 素数判定法1: 遍历从2到n-1的所有数字,判断是否有可以被n整除的数,如果没有,则为素数。 优化法2: 判定的范围改为[2 -,n/2]。当 in/2 时,则判定为素数。 优化法3: 在Java中判定素数的范围也可以到sqrt(n),(对n开平方)。对应的函数为:Math.sqrt(n

    2024年02月16日
    浏览(67)
  • python_输入任意一个数,判断是否是素数

    看了一下其他答案要不是格式不对run不出来,要不就是输入项验证不全,希望答案对大家有用。 

    2023年04月09日
    浏览(49)
  • 【C语言】C语言实现一个函数 判断是否是素数

           欢迎来到南方有乔木的博客!!! 博主主页: 点击点击!戳一戳!! 博主QQ: 1636758318 博主简介: 一名在校大学生,正在努力学习Java语言编程。 穷且意坚,不坠青云之志 ,希望能在编程的世界里找到属于自己的光。 跪谢帅气or美丽的朋友们能够帮我点赞! 请对文中

    2024年02月04日
    浏览(84)
  • 【C语言】一个简单的C语言例子,判断一个数是否为2的幂

    目录 步骤和解释: 示例程序: 代码解释: 十进制转化成二进制: 代码解释: 首先我们需要知道的是2的幂次方在二进制中都是只有一个1的: 所以现在我们可以判断,如果二进制中只有一个1,其他位都是0,则这个数就是2的幂次方; 接着,我们使用这个数-1进行与计算,因

    2024年02月14日
    浏览(54)
  • C 语言 输入一个正整数,程序会利用is_prime函数判断该数是否是素数,如果是素数,输出“%d是素数“,否则输出“%d不是素数“。

    ``` 输入一个正整数,程序会利用is_prime函数判断该数是否是素数,如果是素数,输出\\\"%d是素数\\\",否则输出\\\"%d不是素数\\\"。

    2024年02月11日
    浏览(55)
  • C语言判断一个数是否是质数的几种常用方法(求100-1000以内的所有质数)

    要用代码判断一个数是否是质数,首先我们需要知道什么什么数称之为质数。质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。 以下有三种方法判定质数: 通过从2到n-1每个数均整除

    2024年02月08日
    浏览(91)
  • 判断一个数是否为质数4种方法

    首先理解什么是质数: 素数就是质素,只能被 1 和 它本身整除 的数字。 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 最小的质数为2; 判断一个数是否为素数,要在2~i-1的数字去试除。如果i被整除,就说明i不是素数。如果2~i-1之间的数字都不能

    2024年02月05日
    浏览(59)
  • Java 判断一个数是否是回文数(parlindrome)

    回文数 :从左往右读和从右往左读完全相同的数,如121、12321是回文数,12345不是。 思路 :分别获取到原数字的每一位,反过来组成一个新的数,和原数字比较,若相同则是回文数。 代码 : 关键 : %10获取最后一位,之后将数字/10来去掉这一位,如123%10,得到最后一位3,之

    2024年04月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包