Acwing---866. 试除法判定质数

2024-02-16 23:20
文章标签 质数 acwing 除法 判定 866

本文主要是介绍Acwing---866. 试除法判定质数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

试除法判定质数

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

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

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

接下来 n n n行,每行包含一个正整数 a i ai ai

输出格式
n n n 行,其中第 i i i 行输出第 i i i 个正整数 a i ai ai 是否为质数,是则输出 Y e s Yes Yes,否则输出 N o No No

数据范围
1 ≤ n ≤ 100 , 1≤n≤100, 1n100,

1 ≤ ≤ a i ai ai ≤ ≤ 2^31−1

输入样例:

2
2
6

输出样例:

Yes
No

2.基本思想

(试除法) O(√n)

Tips:不推荐写法:

  1. i < = s q r t ( n ) i <= sqrt(n) i<=sqrt(n) : sqrt 这个函数运行很慢,每次执行时都要运算一遍,所以比较慢
  2. i ∗ i ≤ n i∗i≤n iin :当i的值即将超过int的范围时,你再给它平方,找死吧,很容易溢出

推荐写法:i ≤ n / i

bool is_prime(int n){if(n < 2) return false; //2是最小的质数,如果n小于2,那n肯定就不是质数for(int i = 2;i <= n/i;i ++){ //优化部分if(n % i == 0){ //如果可以被i整除,说明这个数不是质数return false; //返回不是}}return true; //返回是
}

3.代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();while (n-- > 0) {int ai = sc.nextInt();is_prime(ai);}}private static void is_prime(int ai) {if (ai < 2) {System.out.println("No");return;}for (int i = 2; i <= ai / i; i++) {if (ai % i == 0) {System.out.println("No");return;}}System.out.println("Yes");}
}

这篇关于Acwing---866. 试除法判定质数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715988

相关文章

poj 1127 线段相交的判定

题意: 有n根木棍,每根的端点坐标分别是 px, py, qx, qy。 判断每对木棍是否相连,当他们之间有公共点时,就认为他们相连。 并且通过相连的木棍相连的木棍也是相连的。 解析: 线段相交的判定。 首先,模板中的线段相交是不判端点的,所以要加一个端点在直线上的判定; 然后,端点在直线上的判定这个函数是不判定两个端点是同一个端点的情况的,所以要加是否端点相等的判断。 最后

【AcWing】851. 求最短路

spfa算法其实是对贝尔曼福特算法做一个优化。 贝尔曼福特算法会遍历所有边来更新,但是每一次迭代的话我不一定每条边都会更新,SPFA是对这个做优化。 如果说dist[b]在当前这次迭代想变小的话,那么一定是dist[a]变小了,只有a变小了,a的后继(b)才会变小。 用宽搜来做优化,用一个队列,队列里边存的就是所有变小了的结点(队列里存的是待更新的点)。 基本思路就是我更新过谁,我再拿

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

【AcWing】852. spfa判断负环

#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;const int N= 1e5+10;int n,m;int h[N],w[N],e[N],ne[N],idx;int dist[N],cnt[N];//cnt存最短路径的边数bool st[N];v

js算法题,给任意一个偶数,找出他的所有的质数因子

/*给任意一个偶数,找出他的所有的质数因子*/ function primeFactor(n){     var factors=[],            divistor=2;     if(typeof n !=='number'||!Number.isInteger(n)){          return 0;     }; //如果不是偶数返回0,如果是0,返回0

Hessian矩阵判定极值之MATLAB实现符号解

By WC 1.9 .2015 1.Hessian矩阵 其定义如下: 如果函数f在D区域内二阶连续可导,那么黑塞矩阵H(f) 在 D 内为对称矩阵。原因是:如果函数f连续,则二阶偏导数的求

素数判定和分解质素数

1.素数判定   public static boolean isPrime(int n) {if (n <= 1) return false;if (n == 2) return true;if (n % 2 == 0) return false;int limit = (int)Math.sqrt(n) + 1;for (int i = 3; i <= limit; i += 2) {i

信息学奥赛初赛天天练-83-NOIP2014普及组-基础题2-输入设备、输出设备、操作系统、二进制、整数除法、while、do while循环

1 NOIP 2014 普及组 基础题2 4 以下哪一种设备属于输出设备( ) A 扫描仪 B 键盘 C 鼠标 D 打印机 5 下列对操作系统功能的描述最为完整的是( ) A 负责外设与主机之间的信息交换 B 负责诊断机器的故障 C 控制和管理计算机系统的各种硬件和软件资源的使用 D 将没有程序编译成目标程序 11 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( ) A 296

leetcode解题思路分析(一百)860 - 866 题

柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客

【编程基础C++】素数判定、最小公倍数与最大公因数的实现方法

文章目录 素数法一法二 最大公因数辗转相除法另一写法 最小公倍数直接枚举法根据GCD算LCM 素数 素数 是指大于1的自然数,且只能被1和自身整除。例如,2、3、5和7都是素数。它们在数学中非常重要,因为任何大于1的自然数都可以唯一地表示为素数的乘积,这被称为素数分解。 法一 #include <iostream>using namespace std;bool IsPr