首页 > 编程语言 >GESP2024年6月认证C++五级( 第三部分编程题(2))

GESP2024年6月认证C++五级( 第三部分编程题(2))

时间:2025-01-01 09:54:32浏览次数:3  
标签:int 质数 C++ primeFactors 因子 MAXN GESP2024 五级 include

参考程序(线性筛法)

#include <iostream>
#include <vector>
using namespace std;

const int MAXN = 10000001;  // 最大数字范围

// 保存每个数的质因子数量
vector<int> primeFactors(MAXN, 0);

void linearSieve() {
    // 从 2 开始筛选
    for (int i = 2; i < MAXN; i++) {
        // 如果 i 是质数
        if (primeFactors[i] == 0) {
            // 质数的质因子数是 1(它自己)
            primeFactors[i] = 1;
            // 从 i 的倍数开始更新质因子数量
            for (int j = i * 2; j < MAXN; j += i) {
                primeFactors[j]++;
            }
        }
    }
}

int main() {
    int t;
    cin >> t;

    // 预处理质因子数量
    linearSieve();

    while (t--) {
        int n;
        cin >> n;

        // 判断该数字是否是幸运数字
        if (primeFactors[n] == 2) {
            cout << "1\n";
        } else {
            cout << "0\n";
        }
    }

    return 0;
}

参考程序(因数分解法)

#include<bits/stdc++.h>
using namespace std;
map<int,int> mp;
const int N = 1e5+10;
int calc(int x) 
{
	int res = 0;
	set<int> s;
	for (int i = 2; i * i <= x; i++) 
	{
		if (x % i == 0) 
		{
			s.insert(i);
			while (x% i == 0)
			{
				x/= i;
			}
		}
	}
	if (x != 1) 
	{
		s.insert(x);
	}
	return (int)s.size();
}
int a[N];
int main()
{
	int n;
	cin>>n;
	long long ans = 0;
	int pre = 0;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		int x = calc(a[i]);
		if(x==2)
			cout<<"1\n";
		else 
			cout<<"0\n";
	}
}

标签:int,质数,C++,primeFactors,因子,MAXN,GESP2024,五级,include
From: https://blog.csdn.net/weixin_60445850/article/details/144826082

相关文章

  • 【C++】B2085 第 n 小的质数
    博客主页:[小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏:C++文章目录......
  • 【C++】BC89 包含数字9的数
    博客主页:[小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏:C++文章目录......
  • 关于C++游戏开发入门:如何从零开始实现一个完整的游戏项目!
      成长路上不孤单......
  • 【C++11】智能指针
    目录指针标准库unique_ptr对应类方法创建unique_ptr对象的两种方法unique_ptr的使用特性shared_ptr类方法循环引用造成内存泄漏weak_ptrweak_ptr的创建三个方法功能例子1例子2指针普通指针:指向内存区域的地址变量当普通指针指向动态分配的内存的时候,即使这个指......
  • C++ 游戏开发技术文档
    项目概述本技术文档将指导开发一个使用C++构建的简易2D游戏框架。该游戏是一个玩家控制角色收集随机生成的道具的小游戏,核心功能包括:游戏循环:支持帧率控制和逻辑更新。玩家控制:通过键盘控制角色上下左右移动。道具生成与收集:随机生成道具,玩家接触道具后得分。基本碰撞......
  • yolov5单目测距与相机标定流程和c++单目测距RKNN部署
    相机模型、相机标定及基于YOLOv5的单目测距实现1.前言注意此方法不需要预先知道物体尺寸,不需要参照物体!!!!在摄像头成像的过程中,物体反射的光线通过摄像头的凸透镜聚焦到成像器件上,形成一张二维图像。这一过程将三维世界中的物体转换为二维图像,导致深度信息丢失,因此单目摄......
  • LeetCode算法题 (比较含退格的字符串)Day9!!!C/C++
    https://leetcode.cn/problems/backspace-string-compare/description/一、题目描述给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。二、相关知识点了解   ......
  • 使用libtorch对光度立体算法(photometric stereo)进行加速(C++)
    光度立体法是一种三维重建方法,在一些表面产品的缺陷检测有较多的应用(具有深度的缺陷),但是光度立体法需要对每个像素点都求解一个线性方程组L(n*3)*N(3*1)=I(n*1)(n为光源数),在cpu中计算是非常耗时的。本文借助libtorch,在gpu中通过卷积的方式,实现方程组的求解,耗时大约为cpu......
  • C++背单词
    题目描述:最近小明在学习月份的英文单词一月January二月February三月March四月April五月May六月June七月July八月August九月September十月October十一月November十二月December小明爸爸想测试一下天佑到底有没有学会他说出每个月份的前3个字母,小明就写出月份的......
  • C++书籍推荐
    本人收藏的一些电子版:阅读顺序C++primer基础ProfessionalC++基础+新特性现代C++语言核心特性解析更多新特性,STL并发库介绍C++Templates更多的模板语法STLCookbook现代STL用法并发编程实战深入并发ProgrammingwithC++20Concepts,Coroutines,Ranges,andm......