C语言经典算法实例2:数组求素数

简介: C语言经典算法实例2:数组求素数

0c254b9b970f4ff6877189780c74f70d.jpg

一、问题描述


数组求素数

问题的描述

如下几点所示


  1. 输出1750 到 1850 之间的素数。
  2. 计算并输出1750 到 1850 之间的素数之和 S。
  3. 并且输出最大素数。


二、算法实例编译环境


本文C语言经典算法实例的编译环境,使用的是集成开发环境:Visual Studio 2019


c8aa40ece86245138e0fbd3b1a9dbd86.png


Visual Studio 2019官网链接如下

Visual Studio 2019官网链接


5f3d0faf855a49e5b354fc888a2f32cf.png


Visual Studio 2019集成的开发环境的特点有


Visual Studio 2019默认安装Live Share代码协作服务。

帮助用户快速编写代码的新欢迎窗口、改进搜索功能、总体性能改进。

Visual Studio IntelliCode AI帮助。

更好的Python虚拟和Conda支持。

以及对包括WinForms和WPF在内的.NET Core 3.0项目支持等


三、算法实例实现过程


3.1、包含头文件


包含头文件 代码如下所示

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


  • 将要用到的C语言头文件包含进来。


3.2、声明数组


定义宏和声明数组 代码如下所示


int a[101], primeNumber[100] = { 0 };


  • 声明了数组a。


3.3、声明相关变量


声明相关变量 代码如下所示

int i, j, k, s;     // 定义变量
    int max;


  • 声明相关变量i, j, k, s,max;

3.3、数组赋值


数组赋值 代码如下所示


  // 数组赋值
    for (i = 1750, j = 0; j <= 100; i++, j++)
    {
        a[j] = i;
    }


  • 可以将数组赋值。
  • 赋值为1750到1850。

989ff503bd9a48aaaa5102c1a68238ec.jpg

3.4、 输出数组里面元素的值


输出数组里面元素的值 代码如下所示


  // 输入数组里面元素的值
    printf("数组里面元素的值为\n");
    for (i = 0; i <= 100; i++)
    {
        printf("%d ", a[i]);
        if (i % 10 == 0 && i != 0)
        {
            printf("\n");
        }
    }
    printf("\n");


  • 输出 数组中存放的数据。

按F5进行编译,调试结果如下所示。

5e62f9b78cd6438f89b8fb9b6e983280.png

  • 可以正确的输出数组中存放的数据。

3.5、求素数、素数和、最大的素数


求素数、素数和、最大的素数

    // 求素数、素数和、最大的素数
    for (i = s = 0; i <= 100; i++)
    {
        k = sqrt(a[i]);
        for (j = 2; j <= k; j++)
        {
            if (a[i] % j == 0)
            {
                break;
            }
        }
        if (j > k)
        {
            primeNumber[i] = a[i];
            s = s + a[i];
            max = a[i];
        }
    }


  • 可以求出1750 到 1850的素数。
  • 可以求出1750 到 1850的素数和。
  • 可以求出1750 到 1850的最大素数;


3.6、输出所求的素数、素数和、最大的素数


计输出所求的素数的和与最大的素数 代码如下所示


  / // 输出所求的素数、素数和、最大的素数。
    printf("\n1750 到 1850 之间的素数为\n");
    for (int i = 0; i < 100; i++)
    {
        if (primeNumber[i] != 0)
        {
            printf("%d ", primeNumber[i]);
        }
    }
    printf("\n\n1750 到 1850 之间的素数和为:%d\n", s);
    printf("\n1750 到 1850 之间的最大素数为:%d\n", max);


  • 可以输出1750 到 1850的素数。
  • 可以输出1750 到 1850的素数和。
  • 可以输出1750 到 1850的最大素数;

按F5进行编译,调试结果如下所示。



c6ec696118af4a1582b53d156b83eb6c.png

四、经典算法实例程序 完整代码


经典算法实例程序完整代码如下所示


4.1、main.h文件


#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

4.2、main.c文件

#define _CRT_SECURE_NO_WARNINGS
#include "Main.h"
int main()
{
    system("color 3E");
    int a[101], primeNumber[100] = { 0 };
    int i, j, k, s;     // 定义变量
    int max;
    // 数组赋值
    for (i = 1750, j = 0; j <= 100; i++, j++)
    {
        a[j] = i;
    }
    // 输入数组里面元素的值
    printf("数组里面元素的值为\n");
    for (i = 0; i <= 100; i++)
    {
        printf("%d ", a[i]);
        if (i % 10 == 0 && i != 0)
        {
            printf("\n");
        }
    }
    printf("\n");
    // 求素数、素数和、最大的素数
    for (i = s = 0; i <= 100; i++)
    {
        k = sqrt(a[i]);
        for (j = 2; j <= k; j++)
        {
            if (a[i] % j == 0)
            {
                break;
            }
        }
        if (j > k)
        {
            primeNumber[i] = a[i];
            s = s + a[i];
            max = a[i];
        }
    }
    // 输出所求的素数、素数和、最大的素数
    printf("\n1750 到 1850 之间的素数为\n");
    for (int i = 0; i < 100; i++)
    {
        if (primeNumber[i] != 0)
        {
            printf("%d ", primeNumber[i]);
        }
    }
    printf("\n\n1750 到 1850 之间的素数和为:%d\n", s);
    printf("\n1750 到 1850 之间的最大素数为:%d\n", max);
    system("pause");
    return 0;
}


五、总结


本文的C语言经典算法实例:求二维数组最大最小值,要实现的目标如下

  1. 计算并输出1750 到 1850 之间的素数之和 S。
  2. 并且输出最大素数。
  3. 输出1750 到 1850 之间的素数。



b8066c2a25b845658a1e8d9e30ab0f04.jpg


文到这里就结束啦。

希望本文的C语言经典算法实例:数组求素数,能激发你对C语言以及算法学习的热爱。

相关文章
|
29天前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
45 1
|
26天前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
84 6
|
28天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
26天前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
34 5
|
1月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
55 5
|
29天前
|
存储 缓存 算法
C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力
本文探讨了C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力。文章还分析了数据结构的选择与优化、算法设计的优化策略、内存管理和代码优化技巧,并通过实际案例展示了C语言在排序和图遍历算法中的高效实现。
43 2
|
1月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
29天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
45 1
|
29天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
62 1
|
1月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。