学习成果之素数和

题目内容:(题目来源:mooc慕课 程序设计入门——C语言)

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入格式:

两个整数,第一个表示n,第二个表示m。

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入样例:

2 4

输出样例:

15

时间限制:500ms内存限制:32000kb

代码如下:(编译器为:VS2022)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

//算法
// 定义一个函数isprime判断素数
//1.输入两个变量m,n;(0<n<=m<=200)
//2.定义几个变量i,sum=0;
// 使用while循环,持续找到第n个和第m个素数
//使用定义变量j,记录找到素数的个数:若j>m,即跳出循环,(因为找到的素数已经够了)
// 判断当j>n时,开始累加,当j>m时,停止累加,跳出循环
// 输出sum累加的值
//


//定义一个函数isprime判断素数
int isprime(int a) {
    int t;
    for (t = 2; t < a; t++) {
        if (a % t == 0) {
            return 0;
        }    
    }
}


int main() {
    int n,m;
    scanf("%d,%d", &n,&m);//输入两个变量m,n
    int i;
    int j=0;
    int sum = 0;

    while (j < m) {                                   //使用while循环,持续找到前m个素数
        for (i = 2; j < m; i++) {                 //枚举从2开始的所有整数,直到j 不小于 m,循环停止。
            printf("i=%d,j=%d,sum=%d\n", i, j, sum);  //调试作用,不同位置对比
            if (isprime(i)) {                         //判断此刻的i 的值是否为素数
                j += 1;                               //记录找到的素数的个数
                if (j >= n) {                         //求自第n个素数开始的累加的和
                    sum += i;
                }
                //printf("i=%d,j=%d,sum=%d\n", i, j, sum);//调试作用
            }
            //printf("i=%d,j=%d,sum=%d\n", i, j, sum);//调试作用
        }
        //printf("i=%d,j=%d,sum=%d\n", i, j, sum);//调试作用
    }
    printf("%d\n", sum);
    return 0;
}

收获:

  1. 做题先写算法很重要

  1. 遇到不会的立刻去查,比如以上的自定义isprime函数

  1. 一定一定一定要自己写代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值