C语言之素数判断及输出

我们要想解决素数问题首先要明确素数是什么。

文章目录

    • C语言之素数判断及输出
  • 什么是素数
    • 如何计算素数
      • 素数源代码
      • 进阶:因子分解

什么是素数

素数:素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数(来自百度词条)。

如何计算素数

当一个数本身除了1和它本身以外不再有其他因数时为素数。
1):因此判断一个整数num是否为素数,只需用 2 ~ num-1 (因为所有整数都能被1整除)之间的每一个整数去除num,如果都不能被整除,那么 num即一个素数。
用C语言语句表示为:

//如判断数num是否为素数
flag = 0;
for(int i=2;i<num;i++)
{if(num%i==0)flag = 1;
}if{flag == 0}{ //是素数 }else{ //不是素数 }

这里循环可以继续做一下优化减少不必要的运算
2):num不必被 2 ~ num-1 之间的每一个整数去除,只需被 2 ~ √num之间的每一个整数去除就可以了。如果 num不能被 2 ~ √num之间任一整数整除,num 一定是素数。

// An highlighted block
flag = 0;
for(int i=2;i<=sqrt(num);i++)
{if(num%i==0)flag = 1;
}if{flag == 0}{ //是素数 }else{ //不是素数 }


这里需要用到sqrt函数(求平方根),在c语言<math.h>(数学库)中直接调用即可.

素数源代码

(1)素数判断

// **判断num是否为素数**
#include<stdio.h>
#include<windows.h>
#include <math.h>
#pragma warning(disable:4996)   //vs(vs2013)使用scanf时需要加 _s 否则会报错,用这种是解决方法之一int main()
{int num, i;int flag=0;              //判断标志scanf("%d", &num);  //输入要判断的整数numif (num == 0){flag = 1;}for (i = 2; i <= sqrt(num); i++){if (num%i == 0){flag = 1; break;}}if (flag == 0){printf("%d是素数。\n",num);}else{printf("%d不是素数。\n", num);}system("pause");   //vs运行会直接结束运行窗口自动关闭,可以用<window.h>中的syetem函数使运行窗口保留。 return 0;
}

(2)输出1~100所有的素数

// **找出1~100中所有素数**
#include<stdio.h>
#include<Windows.h>
#include <math.h>int main()
{int i = 2,flag=0;for (; i <= 100; i++){flag = 0;int j = 2;for (; j <=sqrt(i); j++){if (i % j == 0){flag++;break;}}if (flag == 0){printf("%d  ", i);}}printf("是素数。\n");system("pause");   //vs运行会直接结束运行窗口自动关闭,可以用<window.h>中的system函数使运行窗口保留。 return 0;
}

运行结果:

进阶:因子分解

链接:因子分解
来源:牛客网

#include <iostream>
#include <cmath>
using namespace std;
// 求最小素因子集合
void factorization(int n){cout << n << " = ";for(int i = 2; i <= sqrt(n); ++i){while(n % i == 0 && i < n){cout << i << " * ";n /= i;}}cout << n ;    //这个时候最后一个因素i刚好等于n
}int main()
{int num;while(cin >> num){factorization(num);cout << endl;}return 0;
}






代码都是自己写的,如有不对欢迎指正【抱拳】。

C语言之素数判断及输出(1~100所有的素数)相关推荐

  1. C语言编程>第三周 ④ 求100之内的素数。

    例题:求100之内的素数. 代码如下: #include <stdio.h> #include "math.h" #define N 101 main() {int i ...

  2. c语言学习之用筛选法求100之内的素数。

    用筛选法求100之内的素数 首先我们来看一下什么是素数: 素数又称质数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除: 介绍一下筛选法: 筛选法所谓"筛选法"指的是& ...

  3. C语言学习之用筛选法求100之内的素数

    用筛选法求100之内的素数 #include <stdio.h> #include <math.h> void main(){int i,j,n,a[101];for(int ...

  4. c语言 用筛选法求100以内的素数,使用筛选法求100以内的素数

    使用筛选法求100以内的素数 筛选法介绍 先把N个自然数按次序排列起来. 1不是质数,也不是合数,划去. 第二个数2是质数留下来,而把2后面所有能被2整除的数都划去.2后面第一个没 划去的数是3,把3 ...

  5. python求100以内的素数和_python如何求100以内的素数

    方法一,用for循环来实现 num=[]; i=2 for i in range(2,100): j=2 for j in range(2,i): if(i%j==0): break else: nu ...

  6. C语言(最孤单的数) 质数的判断以及输出0~100内的质数

    质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数. 根据算术基本定理,每 ...

  7. c语言筛选法求100之内素数,用筛选法求100之内的素数。

    /*用筛选法求给出范围之内的素数.*/ #include #include int isPrime(int n){//判断素数 for(int i = 2; i < n; i ++){ if(n ...

  8. 2. 输出2~100之间的素数

    public class z1 {public static void main(String[] args) {for (int a = 2; a <101; a++) {int b = 2; ...

  9. Java C语言 输出n以内的所有素数 以及判断一个数是不是素数

    目录 Java 输出n以内的素数 判断素数 C语言 输出n以内的素数 判断素数 Java 输出n以内的素数 //判断素数方法 public static void isPrime(int n){int ...

最新文章

  1. ubuntu 下搭建redis和php的redis的拓展
  2. 【资源共享】《Rockchip 量产烧录 指南 V1.0》
  3. OpenCV SURF FLANN匹配的实例(附完整代码)
  4. Johnny and Another Rating Drop CodeForces - 1362C(规律)
  5. 甘肃甘南步班邮递员:草原上的“递爱”艰途
  6. 写给大数据开发初学者的话4
  7. Android开源aria使用,1.1 开始
  8. 测试想要月薪过万?这些能力必不可少!
  9. [Linux + 深度学习]Ubuntu18.04 深度学习环境配置
  10. nxlog windows安装部署
  11. tomcat热部署(springboot项目)
  12. 511遇见易语言教程API模块制作cmd复制文件
  13. C++入门基础知识总结(2022整理)
  14. (笔记)一些有意思的电路
  15. 极速下载!利用插件破解百度云限速
  16. Windows神软Classic Shell停更!经典开始菜单永别了
  17. uniapp swiper内嵌video组件的坑
  18. 数据建模:个人信用分是如何计算出来的?
  19. 全民免费wifi斗法中
  20. 捕获阿里云异常日志遇到的问题

热门文章

  1. python爬虫简易到进阶实战篇——(1)
  2. elasticsearch7.9安装[单集群单节点、开启权限认证]
  3. linux shell 删除key \xAC\xED\x00\x05t\x00\x04${key} 序列化16进制
  4. Apache Kafka 入门 - Kafka命令详细介绍
  5. codeforces 295B B. Greg and Graph(floyd+dp)
  6. webgame qlj
  7. 算法--01背包问题(动态规划算法) 21-01-30
  8. C语言 指针数组和指向指针的指针
  9. linux设置网络唤醒
  10. 树莓派+多个微雪电子Serial Expansion HAT扩展板叠加方法(扩展多个IO口、串口)