C语言算法练习之数组求素数

目录
  • 一、问题描述
  • 二、算法实例编译环境
  • 三、算法实例实现过程
    • 3.1、包含头文件
    • 3.2、声明数组
    • 3.3、声明相关变量
    • 3.4、数组赋值
    • 3.5、 输出数组里面元素的值
    • 3.6、求素数、素数和、最大的素数
    • 3.7、输出所求的素数、素数和、最大的素数
  • 四、经典算法实例程序
    • 4.1、main.h文件
    • 4.2、main.c文件
  • 五、总结

一、问题描述

数组求素数

问题的描述

如下几点所示

输出1750 到 1850 之间的素数。

计算并输出1750 到 1850 之间的素数之和 S。

并且输出最大素数。

二、算法实例编译环境

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

Visual Studio 2019官网链接如下

Visual Studio 2019官网链接

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.4、数组赋值

数组赋值 代码如下所示

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

可以将数组赋值。

赋值为1750到1850。

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

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

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

        if (i % 10 == 0 && i != 0)
        {
            printf("\n");
        }
    }
    printf("\n");

输出 数组中存放的数据。

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

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

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

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

      // 求素数、素数和、最大的素数
    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.7、输出所求的素数、素数和、最大的素数

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

 	/ // 输出所求的素数、素数和、最大的素数。
    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进行编译,调试结果如下所示。

四、经典算法实例程序

完整代码

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

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语言经典算法实例:求二维数组最大最小值,要实现的目标如下

  • 计算并输出1750 到 1850 之间的素数之和 S。
  • 并且输出最大素数。
  • 输出1750 到 1850 之间的素数。

到此这篇关于C语言算法练习之数组求素数的文章就介绍到这了,更多相关C语言数组求素数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言练习之数组中素数交换

    目录 题目要求 总结 题目要求 (1)在主函数中创建数组num,使用测试数据{108 4 19 7 23 66 49 13 33 35}对其初始化: (2)定义change函数,将num数组中的素数首尾交换,即第一个素数与最后一个素数交换,第二个素数与倒数第二个素数交换-,非素数保持位置不变: (3)定义prime函数,用于素数的判断. #include <stdio.h> #include <math.h> int prime(int num) { int i,k; if(num

  • C语言实现的统计素数并求和代码分享

    题目来源于PAT平台,此题又是费了一番脑子.题目要求输出给定区间内的素数个数并对他们求和.具体思路是利用循环判断素数,将结果传递给控制变量,由控制变量再来判断是否执行自增以及求和.当然这里必须要注意1既不是素数也不是合数. 下面是代码: 复制代码 代码如下: #include <stdio.h> int main () {  int a=0,b=0;  int n=0,sum=0;  int x=0,i=0;  scanf("%d %d",&a,&b);  

  • C语言输出孪生素数的实现示例

    目录 1.题目内容: 2.输入格式: 3输出格式: 1.题目内容: 孪生素数是指间隔为 2 的相邻素数,例如最小的孪生素数对是3和5,5和7也是(5虽重复但算作2组). 2.输入格式: 输入N,找出2至N之间的孪生素数的组数. 这里要注意输入的N不要超过int表示的最大范围了 3输出格式: 输出2至N之间的孪生素数,然后输出组数. 代码如下: #include<stdio.h> int Function(int n)//函数判断是否为素数 {     for (int i=2; i<n;

  • c语言判断是否素数程序代码

    复制代码 代码如下: #include <stdio.h> bool isPrimeNum(int x){    if (x == 1)        return false;    else if (x <= 0)        return false;    else if (x == 2)        return true;    else    {        for (int i = 2; i < x; i++)        {            if (

  • C语言实现统计100以内所有素数的个数

    目录 题目描述 分析 代码实现 运行结果 后期完善 网上参考 本人C语言萌新,最近工作中频频出现C语言小错误,遂决定使用笨方法提高我的C语言水平,坚持每天一个C语言小练习,养成C语言手感,从此让编程成为习惯. 题目描述 统计100以内所有素数的个数 分析 素数(prime number)又称质数,在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,2是最小的素数. 代码实现 #include <stdio.h> #define INTEGER_RANGE 100 //数字范围 i

  • C语言实现求梅森素数的代码与解析

    问题描述 梅森数(Mersenne Prime)指的是形如2n-1的正整数,其中指数n是素数,即为Mn.如果一个梅森数是素数,则称其为梅森素数.例如22-1=3.23-1=7都是梅森素数. 当n=2,3,5,7时,Mn 都是素数,但n=11时,Mn=M11=211-1=2047=23X89,显然不是梅森素数. 1722年,瑞士数学大师欧拉证明了231-1=2147483647是一个素数,它共有10位数,成为当时世界上已知的最大素数. 迄今为止,人类仅发现了47个梅森素数.梅森素数历来都是数论研究

  • C语言算法练习之数组求素数

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.声明数组 3.3.声明相关变量 3.4.数组赋值 3.5. 输出数组里面元素的值 3.6.求素数.素数和.最大的素数 3.7.输出所求的素数.素数和.最大的素数 四.经典算法实例程序 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 数组求素数 问题的描述 如下几点所示 输出1750 到 1850 之间的素数. 计算并输出1750 到 1850 之间的素数之和 S. 并且输出最大

  • C语言算法练习之数组元素排序

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.定义宏和声明数组 3.3.声明相关变量 3.4.随机生成十个数字赋值给数组 3.5.输出随机生成的十个数字 3.6.数组从小到大进行排序 3.7.输出数组元素排序好的数字 四.经典算法实例程序 完整代码 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 求数组的排序 问题的描述 如下几点所示 使用rand()库函数随机生成10个1-100之间的数字. 声明数组的大小为10. 随机

  • Go语言算法之寻找数组第二大元素的方法

    本文实例讲述了Go语言算法之寻找数组第二大元素的方法.分享给大家供大家参考.具体如下: 该算法的原理是,在遍历数组的时,始终记录当前最大的元素和第二大的元素.示例代码如下: 复制代码 代码如下: package demo01    import (      "fmt"  )    func NumberTestBase() {      fmt.Println("This is NumberTestBase")        nums := []int{12, 2

  • C语言算法练习之求二维数组最值问题

    目录 一.问题描述 二.算法实例编译环境 三.算法实例实现过程 3.1.包含头文件 3.2.定义宏和声明数组 3.3.声明相关变量 3.4.输入数组(方阵)的阶 3.5.输出 “输入的数组” 3.6.计算每行最大数据中的 最小的那一个数字 3.7.计算每行最小数据中的 最大的那一个数字 四.经典算法实例程序 4.1.main.h文件 4.2.main.c文件 五.总结 一.问题描述 求二维数组最大最小值 问题的描述 如下几点所示 1.在n 行 n 列的二维整数数组中,按以下要求选出两个数. 2.

  • 深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表

    PHP几个算法整理 涉及到以下几个示例.PHP冒泡PHP二分法PHP求素数PHP乘法表 PHP冒泡法 示例 复制代码 代码如下: //PHP冒泡  从小到大function maopao(&$arr){  if(!empty($arr))  {    for($i=0;$i<count($arr);$i++)      {        if($arr[$i]>$arr[$j])        {          //开始交换          $temp = $arr[$i];  

  • C语言中判断素数(求素数)的思路与方法实例

    目录 前言 思路1实现: 思路2实现: <C与指针>4.14-2: 补充:判断素数的4种方法实例 总结 前言 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数. 思路2):判断方法还可以简化.m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去

  • C语言算法金手指摩尔投票法手撕绝大多数问题

    目录 正片开始 概念 优点 算法核心 实现 正片开始 概念 嘛是摩尔投票法?简单来说就是投票法,算法解决的问题是如何在任意多的候选人,选出获得票数最多的那个.常见的算法是扫描一遍选票,也就是遍历,对每个候选人进行统计的选票进行统计. 那我遍历难道不香吗? 这里就要讲一下投票法的过人之处 优点 当执行有序情况时,只要找到中位数,然后检查中位数的个数是否超过选票的一半即可.但是当对象的数目不定时,统计选票可能会执行较长时间,相比原来的时间复杂度 O(n) ,可能需运行 O(n^2) 的时间. 针对无

  • C语言算法练习之打鱼还是晒网

    1. 问题描述 中国有句俗语叫 " 三天打鱼两天晒网 ".某人从 1990 年 1 月 1 日起开始 "三天打鱼两天晒网",问这个人在以后的某一天中是 "打鱼" 还是 "晒网". 2. 题目分析 根据题意可以将解题过程分为 3 步: (1) 计算从 1990 年 1 月 1 日开始至指定日期共有多少天. (2) 由于 "打鱼" 和 "晒网" 的周期为 5 天,所以将计算出的天数用 5 去

  • Golang算法问题之数组按指定规则排序的方法分析

    本文实例讲述了Golang算法问题之数组按指定规则排序的方法.分享给大家供大家参考,具体如下: 给出一个二维数组,请将这个二维数组按第i列(i从1开始)排序,如果第i列相同,则对相同的行按第i+1列的元素排序, 如果第i+1列的元素也相同,则继续比较第i+2列,以此类推,直到最后一列.如果第i列到最后一列都相同,则按原序排列. 样例输入: 1,2,3 2,3,4 2,3,1 1,3,1 按第2列排序,输出: 1,2,3 2,3,1 1,3,1 2,3,4 代码实现: 复制代码 代码如下: pac

  • C语言数据结构之顺序数组的实现

    C语言数据结构之顺序数组的实现 以下为展示顺序数组的示例: 1.用C语言实现的版本 #include<stdio.h> /* EOF(=^Z或F6),NULL */ #include<math.h> /* floor(),ceil(),abs() */ #include<stdlib.h> /*申请和释放内存*/ #include<stdarg.h> /*可变参数*/ #define OK 1 //成功标志 #define ERROR 0 //错误标志 #d

随机推荐

其他