C/C++每日一练(20230304) 计数质数、回文数、位于矩阵边缘的元素和

文章提供了三道编程题目,包括计算小于给定数的质数数量、筛选10到1000之间的回文数以及计算矩阵边缘元素的和。每道题目都给出了C++的实现代码,并附有示例输入输出。

目录

1. 计数质数  ☆

2. 筛选10到1000的回文数 ☆

3. 计算位于矩阵边缘的元素之和 ★


1. 计数质数

统计所有小于非负整数 n 的质数的数量。

示例 1:

输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

示例 2:

输入:n = 0
输出:0

示例 3:

输入:n = 1
输出:0

提示:

  • 0 <= n <= 5 * 10^6 

代码:

#include <bits/stdc++.h>
using namespace std;

class Solution
{
public:
    int countPrimes(int n)
    {
        vector<bool> primesMap(n, true);
        int count = 0;
        for (int i = 2; i < n; i++)
        {
            if (primesMap[i])
            {
                count++;
                for (int j = 2 * i; j < n; j += i)
                {
                    primesMap[j] = false;
                }
            }
        }
        return count;
    }
};

int main()
{
	Solution s;

	cout << s.countPrimes(10) << endl;
	
	cout << s.countPrimes(0) << endl;
	cout << s.countPrimes(1) << endl;
	
	return 0;
} 

输出:

4
0
0


2. 筛选10到1000的回文数

Palindrome Number
设n是一任意自然数,若将n的各位数字反向排列所得自然数与原自然数n相等,则称n为回文数
例如,n = 12321

代码:

#include <stdio.h>
int main()  
{  
    int m,n,k,count=0;  
    for(m=10; m<1000; m++)  
    {  
        k=m;  
        n=0;  
        while(k>0)  
        {  
            n=n*10+(k%10);  
            k=k/10;  
        }  
        if(m == n)
		{
			printf("%d\t", m);
        	if(++count%5==0) printf("\n");
        }
    }
    printf("\nTotal:%d\n", count);
    
    return 0;     
}

输出:

11       22       33       44       55
66       77       88       99      101
111     121     131     141     151
161     171     181     191     202
212     222     232     242     252
262     272     282     292     303
313     323     333     343     353
363     373     383     393     404
414     424     434     444     454
464     474     484     494     505
515     525     535     545     555
565     575     585     595     606
616     626     636     646     656
666     676     686     696     707
717     727     737     747     757
767     777     787     797     808
818     828     838     848     858
868     878     888     898     909
919     929     939     949     959
969     979     989     999
Total:99


3. 计算位于矩阵边缘的元素之和

输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。

示例:

输入:3 3
3 4 1
3 7 1
2 0 1
输出:15
解释:15 = 3+4+1+3+1+2+0+1。第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开。 接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。

代码:

#include<stdio.h>

int main()
{
    int a[256][256];
    int n,m,i,j,sum=0;
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
            if (i == 1 || i == n || j == 1 || j == m) sum += a[i][j];
        }
    }
    printf("%d",sum);
    
    return 0;
}

输入输出:

3 3
3 4 1
3 7 1
2 0 1
15


🌟 每日一练刷题专栏

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

⭐️ 收藏,你的青睐是我努力的方向! 

✏️ 评论,你的意见是我进步的财富!  

C/C++ 每日一练

Python 每日一练

评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hann Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值