关闭

算法提高 ADV-154 质数的后代

标签: java数据结构算法蓝桥杯
198人阅读 评论(0) 收藏 举报
分类:
问题描述
  在上一季里,曾提到过质数的孤独,其实从另一个角度看,无情隔膜它们的合数全是质数的后代,因为合数可以由质数相乘结合而得。
  如果一个合数由两个质数相乘而得,那么我们就叫它是质数们的直接后代。现在,给你一系列自然数,判断它们是否是质数的直接后代。
输入格式
  第一行一个正整数T,表示需要判断的自然数数量
  接下来T行,每行一个要判断的自然数
输出格式
  共T行,依次对于输入中给出的自然数,判断是否为质数的直接后代,是则输出Yes,否则输出No
样例输入
4
3
4
6
12
样例输出
No
Yes
Yes
No
数据规模和约定
  1<=T<=20
  2<=要判断的自然数<=105

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		int [] num = new int[t];
		
		//找出其中最大的那个数
		int max = Integer.MIN_VALUE;
		for (int i = 0; i < num.length; i++) {
			num[i] = sc.nextInt();
			if(max<num[i]){
				max = num[i];
			}
		}
		
		//筛选素数
		boolean [] primes = new boolean[max+1];
		primes[0] = true;
		primes[1] = true;
		for (int i = 2; i < primes.length; i++) {
			if(!primes[i]){
				for (int j = i*2; j < primes.length; j=j+i) {
					primes[j] = true;
				}
			}
		}
		
		boolean flag = false;
		for(int i=0; i<num.length; i++){
			flag = false;
			for(int j=2; j<num[i]; j++){
				if(!primes[j] && num[i]%j==0 && !primes[num[i]/j]){
					System.out.println("Yes");
					j=num[i]-1;
					flag = true;
				}
			}
			if(flag == false){
				System.out.println("No");
			}		
		}
	}
}


  
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

算法提高 特殊的质数肋骨

试用平台 1207: 算法提高 特殊的质数肋骨 时间限制: 1 Sec  内存限制: 128 MB 提交: 9  解决: 2 [提交][状态][讨论版] 题目描述 农民约翰母牛总是产生最好的肋骨。你能...
  • xunalove
  • xunalove
  • 2017-02-21 20:25
  • 962

求质数算法的N种境界

全文转载:http://marvel.blog.chinaunix.net/uid-29073321-id-5569985.html 求质数算法的N种境界 (N > 10)    ★题目   好,言归正传。下面俺就由浅入深,从各种角度来剖析这...
  • hust_dxxxd
  • hust_dxxxd
  • 2016-03-20 13:18
  • 487

求质数算法的N种境界

求质数算法的N种境界 (N > 10) 分类: 性能优化2011-12-01 22:21 13710人阅读 评论(40) 收藏 举报 算法存储语言工作byte优化 目录(?)[+] ★引子   前天,俺...
  • autumn20080101
  • autumn20080101
  • 2013-07-26 08:44
  • 1657

求质数算法的N种境界(N>10)

声明:本文系转载自网友 编程随想 的博客,原文:http://program-think.blogspot.com/2011/12/prime-algorithm-1.htmls ★引子   前天,俺在《俺的招聘经验[4]:通过笔试答题能看出啥?》一文,以"求质数"作为例...
  • net_assassin
  • net_assassin
  • 2013-05-22 15:23
  • 1561

Java求质数算法

package com.test_java; import java.util.Arrays; public class Prime { /* * **求N以内的质数 */ int N; int i,j; Prime(int inputN){ this.N = inpu...
  • wuleihenbang
  • wuleihenbang
  • 2013-03-15 08:42
  • 9736

C++常见的质数判断算法

质数定义:一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除。         算法1:(定义)判断一个整数n是否为质数,只需用2到n-1之间的每一个整数去除,如果都不能被整除,那么n就是一个质数 #include #define MAX...
  • wo17fang
  • wo17fang
  • 2015-08-14 09:53
  • 10867

高效的求取100以内的质数

求取100以内的质数,常见的做法就是双重循环,内层循环的终值为外层循环值的二次方根值,若两数一直不能够整除,则为质数。但两层循环在数据量较大时,效率极低。现提供另外一种思路: #include #include using namespace std; int main() { //质数只...
  • zhiren2011
  • zhiren2011
  • 2015-05-11 15:29
  • 997

算法提高 特殊的质数肋骨

算法提高 特殊的质数肋骨 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述   农民约翰母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一...
  • hg_zhh
  • hg_zhh
  • 2017-05-14 21:07
  • 114

C#找质数(素数)厄拉多塞筛法

C#找质数(素数)厄拉多塞筛法质数(prime number)又称素数,有无限个。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数(除了1和它本身以外不再有其他的因数)。根据算术基本定理,每一个比1大的整数,要么本身是...
  • cadenzasolo
  • cadenzasolo
  • 2016-02-28 23:47
  • 1749

C语言求质数的算法

qianya 上次被出了一题质数的C语言求解题目,当时用了最粗暴的算法,回来仔细参考资料,其实答案有很多种: 1,小学生版本:判断 x 是否为质数,就从 2 一直算到 x-1。 static rt_uint32_t array1[ARRAY_LEN]; void func1(void) { ...
  • kyo34080800
  • kyo34080800
  • 2014-06-13 12:38
  • 7370
    个人资料
    • 访问:15531次
    • 积分:1643
    • 等级:
    • 排名:千里之外
    • 原创:156篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条