博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
阅读量:6160 次
发布时间:2019-06-21

本文共 1620 字,大约阅读时间需要 5 分钟。

本文出自:

题意:

求解An 与 An-1是否相等。

n分为两个情况——

1.n为素数,

2.n为合数。

=  =好像说了个废话。。素数的时候,能够直接输出no,由于素数不可能和An-1相等。合数的时候,假设n是a^b次方,那么也是NO。原因非常easy,之前数字的最小公倍数的n的因子次方数,不能超过n的次方数。

//============================================================================// Name        : 数论问题.cpp// Author      :// Version     :// Copyright   : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include 
#include
#include
using namespace std;#define lln long long int#define MAXN 1000001bool vis[MAXN];int prime[100000];int p;void Prime(){ //0为不是合数,1为是合数 memset(vis, 1, sizeof(vis)); p = 0; int i, j; for(i = 2; i < MAXN; i++) { if(vis[i]) { prime[p++] = i; for(j = 2 * i; j < MAXN; j += i) vis[j] = 0; } else continue; }}void ace(){ //init Prime(); //work point int t, i; //num int a; int num; cin >> t; while(t--){ scanf("%d", &a); if(a == 2) { printf("NO\n"); continue; } if(vis[a]) printf("NO\n"); else { num = 0; for(i = 0 ; i <= p; i++) { if(a % prime[i] == 0) { num++; while(a % prime[i] == 0) a /= prime[i]; } if(a == 1) break; } if(num >= 2) printf("YES\n"); else printf("NO\n"); } }}int main() { ace(); return 0;}

转载地址:http://srhfa.baihongyu.com/

你可能感兴趣的文章
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>
Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
查看>>
resmgr:cpu quantum等待事件
查看>>
一个屌丝程序猿的人生(六十六)
查看>>
Java 编码 UTF-8
查看>>
SpringMVC实战(注解)
查看>>
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>
eclipse启动无响应,老是加载不了revert resources,或停留在Loading workbench状态
查看>>