试题 算法提高 Monday-Saturday质因子

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

  这个问题是个简单的与数论有关的题目,看起来似乎是“求正整数的所有质因子”,但实际上并不完全是这样。

本题中需要定义以下几个概念:

  1. Monday-Saturday数

  对于一个正整数N,如果它除以7得到的余数是1或6,则可以写成N=7k+{1,6}的形式。更形象的,我们把这样的N称作“Monday-Saturday数”,简称“MS数”。

  2. Monday-Saturday因子

  如果对于两个MS数a,b,若存在一个MS数x,使得ax=b,那么就称a是b的一个“Monday-Saturday因子”,简称“MS因子”。

  3. Monday-Saturday质数

  如果对于MS数a,满足a>1且除了1和a之外a没有其他的MS因子,那么称a是一个“Monday-Saturday质数”,简称“MS质数”。

  注:对于传统意义上的质数,若它是一个MS数,则它一定是一个MS质数。但反之不必成立,例如27,它是一个MS质数但不是传统意义上的质数。

  4. Monday-Saturday质因子

  如果对于两个MS数a,b,若满足a是b的MS因子且a是一个MS质数,那么称a是b的一个“Monday-Saturday质因子”。

  例如:27是216的一个MS质因子(216=27*8)。

问题就是,给定一个MS数N,求其所有的Monday-Saturday质因子。

输入格式

  每个输入数据包含多行,每行一个整数N(保证N一定是MS数,1<N<300000)。

  输入的最后一行是一个整数1(对于这一行,你不必输出任何信息)。

  每个输入数据不超过100行。

输出格式

  对于每个N输出一行,表示N的所有Monday-Saturday质因子,按从小到大的顺序输出。格式形如“N: p1 p2 p3 …… pk”,注意行末无多余空格。

【样例输入】

  205920

  262144

  262200

  279936

  299998

  1

【样例输出】

  205920: 6 8 13 15 20 22 55 99

  262144: 8

  262200: 6 8 15 20 50 57 69 76 92 190 230 475 575 874 2185

  279936: 6 8 27

  299998: 299998

数据规模和约定

  1<N<300000,每个输入数据不超过100行。

package com.company;

import java.util.ArrayList;
import java.util.Scanner; public class Monday_Saturday质因子 {
public static boolean [] Not_MS_Num = new boolean[300005];
public static ArrayList<Integer> MS_Num = new ArrayList<>();
public static int N;
public static void main(String[] args) {
//先把所有的MS数都循环出来
for (int i = 6; i <= 300000; )
{
if (Not_MS_Num[i] == false)
{
MS_Num.add(i);
for (int k = 6; k * i <= 300000; )
{
Not_MS_Num[k * i] = true;
if (k % 7 == 6)
k += 2;
else
k += 5;
}
}
if (i % 7 == 6)
i += 2;
else
i += 5;
}
Scanner sc = new Scanner(System.in);
//这里直接输入数进行判断
N=sc.nextInt();
while (N > 1)
{
System.out.print(N+":"); for (int i = 0; i < MS_Num.size() && MS_Num.get(i) <= N; ++i)
{
if (N % MS_Num.get(i) == 0)
System.out.print(" "+MS_Num.get(i));
}
N=sc.nextInt();
System.out.println(); } }
}

最新文章

  1. TNF-mutithread 编译过程记录
  2. docker1.12 安装pxc(Percona XtraDB Cluster )测试
  3. hdu 1284 钱币兑换问题 完全背包
  4. PendingIntent概述
  5. 开放windows服务器端口-----以打开端口8080为例
  6. Spring在web开发中的应用
  7. Codeforces Round #460 (Div. 2) ABCDE题解
  8. LeetCode(283. 移动零)
  9. python内置模块之collections(六)
  10. oogle advertiser api开发概述——速率限制
  11. js如何调试,使用debug模式
  12. Linux系统CentOS 7配置Spring Boot运行环境
  13. convert2utf8withbom
  14. ubuntu SDL2 安装时依赖文件导致安装失败
  15. 多网卡绑定(bond)
  16. final方法,abstract方法和abstract类,native方法
  17. 移动端mate标签设置
  18. javascript不同类型数据之间的运算是如何转换的
  19. NOI 2018 你的名字
  20. select简单示例,有注释

热门文章

  1. HTML简单的伪装与造假
  2. Java多线程带返回值的Callable接口
  3. python--正则表达式|re模块学习
  4. 关于layui数据表格的各种事件
  5. es6中class类的全方面理解
  6. HttpServletRequest与HttpServletResponse
  7. 使用urllib
  8. JavaScript高级技术总结
  9. SpringBoot2.1电商通用(微信+支付宝)支付系统实战
  10. PHP 获取当前目录下的所有文件