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语言以及算法学习的热爱。

相关文章
|
26天前
|
存储 算法 数据管理
C语言算法复杂度
【10月更文挑战第20天】
C语言算法复杂度
|
7天前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
31 4
|
1月前
|
存储 编译器 C语言
【c语言】数组
本文介绍了数组的基本概念及一维和二维数组的创建、初始化、使用方法及其在内存中的存储形式。一维数组通过下标访问元素,支持初始化和动态输入输出。二维数组则通过行和列的下标访问元素,同样支持初始化和动态输入输出。此外,还简要介绍了C99标准中的变长数组,允许在运行时根据变量创建数组,但不能初始化。
37 6
|
1月前
|
存储 人工智能 BI
C语言:数组的分类
C语言中的数组分为一维数组、多维数组和字符串数组。一维数组是最基本的形式,用于存储一系列相同类型的元素;多维数组则可以看作是一维数组的数组,常用于矩阵运算等场景;字符串数组则是以字符为元素的一维数组,专门用于处理文本数据。
|
1月前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
1月前
|
存储 C语言
C语言:一维数组的不初始化、部分初始化、完全初始化的不同点
C语言中一维数组的初始化有三种情况:不初始化时,数组元素的值是随机的;部分初始化时,未指定的元素会被自动赋值为0;完全初始化时,所有元素都被赋予了初始值。
|
1月前
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法
|
1月前
|
C语言
C语言数组
C语言数组
20 0
|
算法 编译器 程序员
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
C语言学习笔记(数组<2>+图解+题例+三子棋游戏<初级>)
134 0
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
|
存储 C语言
C语言学习笔记—P10(数组<1>+图解+题例)
C语言学习笔记(数组<1>+图解+题例)
137 0
C语言学习笔记—P10(数组<1>+图解+题例)
下一篇
无影云桌面