zoukankan      html  css  js  c++  java
  • [原]Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)

    本文出自:http://blog.csdn.net/svitter/


    题意:

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

    n分为两个情况——

    1.n为素数,

    2.n为合数。

    =  =好像说了个废话。。素数的时候,可以直接输出no,因为素数不可能和An-1相等。合数的时候,如果n是a^b次方,那么也是NO。原因很简单,之前数字的最小公倍数的n的因子次方数,不能超过n的次方数。


    //============================================================================
    // Name        : 数论问题.cpp
    // Author      :
    // Version     :
    // Copyright   : Your copyright notice
    // Description : Hello World in C++, Ansi-style
    //============================================================================
    
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    using namespace std;
    #define lln long long int
    #define MAXN 1000001
    
    bool 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
    ");
                continue;
            }
    		if(vis[a])
                printf("NO
    ");
            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
    ");
                else
                    printf("NO
    ");
            }
    	}
    }
    
    int main() {
    	ace();
    	return 0;
    }
    


    作者:svitter 发表于2014-5-2 21:17:35 原文链接
    阅读:207 评论:0 查看评论
  • 相关阅读:
    chrome 浏览器设置useragent为微信浏览器
    js 16进制颜色和RGBA颜色互转
    json parse 大数精度丢失
    taro 小程序react 搜索高亮关键字
    sourcetree 配置 openssh
    一次性卸载npm本地包(node_modules)依赖
    微信小程序订阅消息开发总结
    微信小程序请求设置权限
    taro
    浅谈JS之AJAX
  • 原文地址:https://www.cnblogs.com/svitter/p/3724324.html
Copyright © 2011-2022 走看看