当前位置: 首页 > news >正文

C语言之素数进化论

最近,有人给我私信问我怎么用C语言求素数!!!

于是乎我这个码龄1年的小萌新就来解决他的问题。

素数,也称质数,是指只能被1和自身整除的正整数。在大于1的自然数中,2是最小的素数,其他的素数依次为3、5、7、11、13、17、19、23……。素数的特点是除了1和自身之外没有其他因数。因此,素数无法被其他数整除,也不能被分解为其他的乘积。素数在数论和密码学等领域有重要的应用。

先举个栗子100——200之间的素数。

说到素数大家一定会先这么写:

#define CRT SECURE NO WARNINGS
#include<stdio.h>
int main()
{
    int i = 0;
    int count = 0;
    for(i = 100;i <= 200;i++)
    {
        int flat = 1;
        int j = 0;
        for(j = 2;j < i;j++)
        {
            if(i % j == 0)
            {
                flat = 0;
                break;
            }
        }
        if(flat == 1)
        {
            count++;
            printf("%d ",i);
            
        }
    }

    printf("\ncount=%d\n",count);
    return 0;
}

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

但这个复杂度有点高!

如果了解素数,就知道不是素数的数一定可以被小于它开方后的整数整除,所以————嘿嘿!

#define CRT SECURE NO WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
    double i = 0;
    int count = 0;
    for(i = 100;i <= 200;i++)
    {
        int flat = 1;
        int j = 0;
        for(j = 2;j <= sqrt(i);j++)
        {
            if(int(i) % j == 0)
            {
                flat = 0;
                break;
            }
        }
        if(flat == 1)
        {
            count++;
            printf("%d ",int(i));
            
        }
    }

    printf("\ncount=%d\n",count);
    return 0;
}

#define CRT SECURE NO WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{double i = 0;int count = 0;for(i = 100;i <= 200;i++){int flat = 1;int j = 0;for(j = 2;j <= sqrt(i);j++){if(int(i) % j == 0){flat = 0;break;}}if(flat == 1){count++;printf("%d ",int(i));}}printf("\ncount=%d\n",count);return 0;
}

不,这还是不让计算机偷懒!!!

对了,差点忘了,好像偶数里只有2是素数!!!所以————吼吼!

#define CRT SECURE NO WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
double i = 0;
int count = 0;
for(i = 101;i <= 200;i+=2)
{
    int flat = 1;
    int j = 0;
    for(j = 2;j <= sqrt(i);j++)
    {
        if(int(i) % j == 0)
        {
            flat = 0;
            break;
        }
    }
    if(flat == 1)
    {
        count++;
        printf("%d ",int(i));
            
    }
}

printf("\ncount=%d\n",count);
return 0;
}

#define CRT SECURE NO WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
double i = 0;
int count = 0;
for(i = 101;i <= 200;i+=2)
{int flat = 1;int j = 0;for(j = 2;j <= sqrt(i);j++){if(int(i) % j == 0){flat = 0;break;}}if(flat == 1){count++;printf("%d ",int(i));}
}printf("\ncount=%d\n",count);
return 0;
}

这样就好了嘛,不不不,我还要把他变成函数。

#define CRT SECURE NO WARNINGS
#include<stdio.h>
#include<math.h>

int is_prime(double(n))
{
    int j = 0;
    for(j = 2;j <= sqrt(n);j++)
    {
        if(int(n) % j == 0)
        {
            return 0;
        }
    }
    return 1;
}

int main()
{
    double i = 0;
    int count = 0;
    for(i = 101;i <= 200;i+=2)
    {
        if(is_prime(i) == 1)
        {
            count++;
            printf("%d ",int(i));
        }
    }

    printf("\ncount=%d\n",count);
    return 0;
}

#define CRT SECURE NO WARNINGS
#include<stdio.h>
#include<math.h>int is_prime(double(n))
{int j = 0;for(j = 2;j <= sqrt(n);j++){if(int(n) % j == 0){return 0;}}return 1;
}int main()
{double i = 0;int count = 0;for(i = 101;i <= 200;i+=2){if(is_prime(i) == 1){count++;printf("%d ",int(i));}}printf("\ncount=%d\n",count);return 0;
}

嘿嘿轻松解决!

其实还能再加,但本猿要期末了!!!呜—呜——呜—呜呜呜呜——————

相关文章:

  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • [论文阅读]4DRadarSLAM: A 4D Imaging Radar SLAM System for Large-scale Environments
  • Flutter中的Tree
  • 力扣188. 买卖股票的最佳时机 IV
  • cissp 第10章 : 物理安全要求
  • PHP中excel带图片数据导入
  • Centos 磁盘挂载和磁盘扩容(新加硬盘方式)
  • <HarmonyOS第一课>1~10课后习题汇总
  • 使用HttpSession和过滤器实现一个简单的用户登录认证的功能
  • ControlNet构图控制
  • PCL 格网法计算点云的占地面积
  • React16源码: React中创建更新的方式及ReactDOM.render的源码实现
  • 收到的字符串写入xml并且将这个xml写入.zip文件中
  • 【设计模式】工厂模式
  • 【动态规划】C++算法:446等差数列划分 II - 子序列
  • [Vue CLI 3] 配置解析之 css.extract
  • 「译」Node.js Streams 基础
  • 【css3】浏览器内核及其兼容性
  • JAVA多线程机制解析-volatilesynchronized
  • SwizzleMethod 黑魔法
  • Vue2 SSR 的优化之旅
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 从零开始学习部署
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 第二十章:异步和文件I/O.(二十三)
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #《AI中文版》V3 第 1 章 概述
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (1)(1.13) SiK无线电高级配置(五)
  • (4)(4.6) Triducer
  • (a /b)*c的值
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (笔试题)分解质因式
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (四)Controller接口控制器详解(三)
  • (转)EOS中账户、钱包和密钥的关系
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ... 是什么 ?... 有什么用处?
  • .“空心村”成因分析及解决对策122344
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 成都线下面基会拉开序幕
  • .net framework profiles /.net framework 配置
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @hook扩展分析
  • [ Linux ] git工具的基本使用(仓库的构建,提交)