当前位置:   article > 正文

PTA练习4-11 统计素数并求和_1. 实验1:统计素数并求和——for&if&while 【问题描述】 本题要求统计给定整数m和

1. 实验1:统计素数并求和——for&if&while 【问题描述】 本题要求统计给定整数m和

本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:

10 31

输出样例:

7 143

解题代码:

#include <stdio.h>  
#include <math.h>
 
int main(){
    int m,n;
    scanf("%d %d",&m,&n);
    int i;
    int count=0,sum=0;
    for(m;m<=n;m++){
        int s;
        s=sqrt(m);
        for(i=2;i<=s;i++){
            if(m%i==0){
        	    break;
            }
        }
        if(i>s){
            if(m==1){
                count=count; 
            }
            else{
        	    sum+=m;
                count++;
            }
        }  
    }
    printf("%d %d",count,sum);  
    return 0;  
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

解题思路:
本题视频讲解链接 https://www.bilibili.com/video/BV1cr4y1w79H/
更多PTA题目视频讲解请关注B站(哔哩哔哩):李桥桉

首先,先写C语言的框架:第一行头文件+第4行+第28、29行写上。

下面先屡一下做题思路,题目要求是输入两个数m,n且n>m,
我们要输出m和n之间素数的个数以及这些素数的总和。

首先我们要思考,怎么判断一个数是素数呢?
首先,1不是素数,偶数以及能开方的数都不是素数,偶数2除外。

有3个可以判断素数的办法:
①用X对2—(X-1)之间的数取余,如果满足余数为0则不是素数;
②用X对2— X/2 之间的数取余,如果满足余数为0则不是素数;
③用X对2—根号X之间的数取余,如果满足余数为0则不是素数;
本题我们采用第③种判断方法。

首先,有输入就要调用scanf()函数,%d整型输出,
m和n前面不要忘了加取址符;
随后再把m、n变量,定义到scanf()语句的前面去;

然后从第9行开始看,

for(m;m<=n;m++){

这道题我们要用两个for循环,
最外层for循环是从m到n进行n-m+1次循环,因为有n-m+1个数嘛;
内层for循环是对每个数进行遍历,遍历根号下它本身次,
且每次都要判断该数对2—根号下它本身之间的每个数进行取余,结果是否为0;
如果满足余数为0则不是素数嗷;
于是,我们增加break语句终止当次循环,继续对下个数进行同样遍历;

因为内层for循环,对每个数从2开始进行取余到根号下m结束,
注意,这里的根号下m是向下取整数,
所以,整数1~3之间的数开根号,结果s都是1,
整数4~8之间的数开根号,结果s都是2;

如果i>s了,就可以说明它是一个素数了,
当然1除外,1不是素数,但是题目要求中是可以输入1的,
所以我们在这里要加一个分支,用来判定1和其他素数;

if(m==1){
count=count;
}

如果i>s且m==1成立,那么count不变,不计数;
否则,就对素数进行累加

else{
sum+=m;
count++;
}

下面大家自己运行一下代码叭。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/329107
推荐阅读
相关标签
  

闽ICP备14008679号