首页 > 其他分享 >AcWing 866. 试除法判定质数

AcWing 866. 试除法判定质数

时间:2023-08-20 17:31:34浏览次数:39  
标签:输出 No int 质数 866 因数 Yes AcWing

JWvFczgRNg.jpg

题目

给定 $n$ 个正整数 $a_i $,判定每个数是否是质数。

输入格式 第一行包含整数 $n$。

接下来 $n$ 行,每行包含一个正整数 $a_i$。

输出格式 共 $n$ 行,其中第 $i$ 行输出第 $i$ 个正整数 $a_i$ 是否为质数,是则输出 Yes,否则输出 No

数据范围 $1≤n≤100,1≤a_i≤2^{31}−1$ 输入样例:

2
2
6

输出样例:

Yes
No

思路

  1. 为什么可以遍历$2...x^{1/2}$来确认 对于某个数 $x$,$1、x$为一对因数,我们可以用没对因数的左点i,可以同时验证一对因数。最小的一对左部因数必然 $<= x^{1/2}$,否则两个因数乘积大于 $x$
  2. 为什么不用 $i * i <= x$ 而是 $i <= x / i$ $i * i <= x$情况下,当x接近类型最大值max时,若$i * i <= max, (i + 1) * (i + 1) > max$,此时数值溢出,会影响对结果的判断

代码

#include <iostream>

using namespace std;

int n, a;

bool is_prime(int x)
{
    if (x < 2) return false;
    
    for (int i = 2; i <= x / i; i ++ )
        if (x % i == 0) return false;
    
    return true;
}

int main()
{
    cin >> n;
    
    while (n -- )
    {
        cin >> a;
        if (is_prime(a)) puts("Yes");
        else puts("No");
    }
    
    return 0;
}

标签:输出,No,int,质数,866,因数,Yes,AcWing
From: https://blog.51cto.com/u_16170343/7162720

相关文章

  • Acwing 第117场周赛
    Acwing第117场周赛这次的题比较简单,但是在做第二题的时候有地方一开始没有想到,导致想的比较简单,提交错了两次,下次要彻底思考清楚再提交A题题意:给定一个正整数n,请你计算一共有多少个正整数数对(a,b)同时满足:a>ba+b=n输入格式第一行包含整数T,表示共有T组测试数据。每......
  • AcWing 861. 二分图的最大匹配
    题目给定一个二分图,其中左半部包含$n_1$个点(编号$1∼n_1$),右半部包含$n_2$个点(编号$1∼n_2$),二分图共包含$m$条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图$G$,在$G$的一个子图$M$中,$M$的边集......
  • Acwing 197 阶乘分解
    我觉得都不用过多解释,看代码就懂了#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e6+10;intread(){ intx=0; chars=getchar(); while(s<'0'||s>'9') { s=getchar(); } while(s>='0'&&......
  • AcWing 860. 染色法判定二分图
    题目给定一个$n$个点$m$条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数$n$和$m$。接下来$m$行,每行包含两个整数$u$和$v$,表示点$u$和点$v$之间存在一条边。输出格式如果给定图是二分图,则输出Yes,否则输出No......
  • 质数总结
    试除法判质数算法思想由于算法比较简单,就不再从朴素一步步进行优化了,直接写最终版本一个数n的约数都是成对存在的,且一个位于$\sqrt[2]{n}$前面,一个位于后面。所以只需要判断从2到$\sqrt[2]{n}$的数是不是约数即可代码实现/***线性筛(欧拉筛)核心:一个数只会被它的最小质......
  • 【学习笔记】简单数论-质数
    质数的个数是无限的。试除法:若一个正整数\(N\)为合数,则存在一个能整除\(N\)的数\(T\),其中\(2\leT\le\sqrt{N}\)。时间复杂度为\(O(\sqrt{N})\)。代码实现boolisprime(intn){ if(n<2) returnfalse; for(inti=2;i<=sqrt(n);i++) if(n......
  • 4866: 瑞士轮 归并排序
    描述  2*N名编号为1~2N的选手共进行R轮比赛。每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。总分相同的,约定编号较小的选手排名靠前。每轮比赛的对阵安排与该轮比赛开始前......
  • AcWing 858. Prim算法求最小生成树
    题目给定一个$n$个点$m$条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图$G=(V,E)$,其中$V$表示图中点的集合,$E$表示图中边的集合,$n=|V|,m=|E|$。由$V$中的全部$n$个......
  • AcWing 854. Floyd求最短路
    题目给定一个$n$个点$m$条边的有向图,图中可能存在重边和自环,边权可能为负数。再给定$k$个询问,每个询问包含两个整数$x$和$y$,表示查询从点$x$到点$y$的最短距离,如果路径不存在,则输出impossible。数据保证图中不存在负权回路。输入格式第一行包含三个整数$n,m,k......
  • AcWing 852. spfa判断负环
    题目给定一个$n$个点$m$条边的有向图,图中可能存在重边和自环,边权可能为负数。请你判断图中是否存在负权回路。输入格式第一行包含整数$n$和$m$。接下来$m$行每行包含三个整数$x,y,z$,表示存在一条从点$x$到点$y$的有向边,边长为$z$。输出格式如果图中存在负......