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

相关文章
|
2天前
|
存储 C语言
C语言——数组(下)
C语言——数组(下)
8 0
C语言——数组(下)
|
2天前
|
C语言
C语言——数组(上)
C语言——数组(上)
9 0
|
3天前
|
C语言
每天一道C语言编程(数组操作)
每天一道C语言编程(数组操作)
6 0
|
3天前
|
C语言
每天一道C语言编程(第一弹~):数组
每天一道C语言编程(第一弹~):数组
9 0
|
3天前
|
搜索推荐 算法 Java
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
【5月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
11 0
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
|
3天前
|
算法 C语言 人工智能
|
3天前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
3天前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
3天前
|
存储 算法 Java
数据结构与算法 数组和链表
数据结构与算法 数组和链表
12 0
|
3天前
|
机器学习/深度学习 C语言
C语言三维数组的创建
该代码片段展示了如何在C语言中创建一个动态的3D数组。由于`n`在编译时未知,不能直接声明为`int f[n][n][n]`。正确的方法是使用`malloc`进行动态内存分配。首先分配`n`个`int **`,然后对每一层分配`n`个`int *`,最后每个元素分配`n`个`int`。之后可以使用这个3D数组,并在完成后正确释放内存。
11 2