恒生电子笔试 恒生电子笔试题 0321

笔试时间:2024年03月21日

历史笔试传送门:2023秋招笔试合集

第一题

题目

给出一个正整数,请写一个算法来判断该数是质数还是合数,如果是合数,需输出该合数的质数因子。

说明:直接使用开发语言提供的函数不得分。

判断:8 13 99 177 8888是质数还是合数。

输入描述

8 13 99 177 8888

输出描述

质数 或者 合数

样例输入

100

样例输出

[100]是合数.

100=2*2*5*5

说明

整数100是合数,拆分后的质数因子为:2*2*5*5。

参考题解

首先判断一个数是否是质数;再找出该合数的所有质因子:从i=2开始,如果n可以被i整除,那就不断的除,并保存i;不能被整除,那就i++;不断迭代。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
using namespace std;

int main() {
    int n; cin >> n;
    if (n == 1) {
        return 0;
    }
    bool prime = true;
    for (int i = 2; i <= sqrt(n); ++i) {
        if (n % i == 0) {
            prime = false;
            break;
        }
    }
    if (prime) {
        printf("[%d]是质数.", n);
        return 0;
    }
    printf("[%d]是合数.\n", n);
    vector<int> arr;
    int m = n;
    for (int i = 2; i <= sqrt(n); ++i) {
        while (n % i == 0) {
            n /= i;
            arr.push_back(i);
        }
    }
    if (n != 1) arr.push_back(n);
    string s = to_string(m) + "=";
    for (int e : arr) s += to_string(e) + "*";
    s.pop_back();
    printf("%s", s.c_str());
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        if (n == 1) {
            return;
        }
        boolean prime = true;
        for (int i = 2; i <= Math.sqrt(n); ++i) {
            if (n % i == 0) {
                prime = false;
                break;
            }
        }
        if (prime) {
            System.out.printf("[%d]是质数.", n);
            return;
        }
        System.out.printf("[%d]是合数.\n", n);
        List<Integer> arr = new ArrayList<>();
        int m = n;
        for (int i = 2; i <= Math.sqrt(n); ++i) {
            while (n % i == 0) {
                n /= i;
                arr.add(i);
            }
        }
        if (n != 1) arr.add(n);
        StringBuilder s = new StringBuilder(Integer.toString(m) + "=");
        for (int e : arr) s.append(e).append("*");
        s.deleteCharAt(s.length() - 1);
        System.out.print(s.toString());
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

import math

n = int(input())
if n == 1:
    exit()
prime = True
for i in range(2, math

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

面试官是主管姐姐,全程微笑,还给我耐心讲解和解答,感觉又是自己的能力配不上这么好的面试官的一次面试,然后今天才从同学那里知道面试的时候弄个虚拟背景不是很友好,可能显得我不是很尊重人1.&nbsp;怎么学习前端的2.&nbsp;推荐下你看的关于前端的书籍3.&nbsp;讲一下原型链的概念4.&nbsp;讲一下闭包5.&nbsp;你遇到过内存泄露吗,有哪些解决方法6.&nbsp;Vue3中有没有可以提升性能的写法,或者是避免出现性能问题的写法7.&nbsp;说一下this指向8.&nbsp;http状态码9.&nbsp;提到了304跟缓存相关,说一下什么是协商缓存,什么是强制缓存,怎样实现协商缓存,代码层面或者是服务器层面怎样做10.&nbsp;缓存过期的的时候,是服务器直接给一个新的资源,还是浏览器再发一次请求11.&nbsp;请求部分的组成有哪些12.&nbsp;说到请求头,你知道哪些常见请求头13.&nbsp;跨域这个问题有遇到过吗,解决方法14.&nbsp;解决跨域使用CORS的方式,Access-Control-Allow-Origin你觉得设置为`*`合适吗?15.&nbsp;Access-Control-Allow-Origin只能设置一个源,但是想要允许多个源,怎样解决16.&nbsp;除了配置域名之外,还要设置其他很多的字段,你知道有哪些17.&nbsp;说一下BFC18.&nbsp;说一下你知道的CSS3&nbsp;新特性19.&nbsp;你知道去年的ECMA发布的新标准有什么吗,前年的呢,有去了解过吗20.&nbsp;说一下你知道的不包括ES6之后的新特性,比较新的特性21.&nbsp;TS中有哪些类型操作的方法22.&nbsp;看你自己写过一个组件库,说一下UI设计,代码设计思路23.&nbsp;说一下组件通信方式24.&nbsp;事件总线的原理,谁是观察者25.&nbsp;Vue3&nbsp;响应式怎么实现的26.&nbsp;你在开发的过程中,你能理解你说的这些吗,分支切换,自定义什么时候触发effect,调度器27.&nbsp;rollup有用过吗,webpack常见的配置,loader,plugin28.&nbsp;最后一个问题,你为什么弄了个虚拟背景#前端八股##前端实习面试##面经#
点赞 评论 收藏
转发
点赞 5 评论
分享
牛客网
牛客企业服务