zoukankan      html  css  js  c++  java
  • Kattis之旅——Prime Reduction

    A prime number p≥2 is an integer which is evenly divisible by only two integers: 1 and p. A composite integer is one which is not prime. The fundamental theorem of arithmetic says that any integer x can be expressed uniquely as a set of prime factors – those prime numbers which, when multiplied together, give x. Consider the prime factorization of the following numbers:
    10=2×5 16=2×2×2×2 231=3×7×11
    Consider the following process, which we’ll call prime reduction. Given an input x:

    if xx is prime, print xx and stop
    factor xx into its prime factors p1,p2,…,pk
    let x=p1+p2+⋯+pk
    go back to step 1
    Write a program that implements prime reduction.

    Input
    Input consists of a sequence of up to 2000020000 integers, one per line, in the range 22 to 109109. The number 44 will not be included in the sequence (try it to see why it’s excluded). Input ends with a line containing only the number 4.

    Output
    For each integer, print the value produced by prime reduction executed on that input, followed by the number of times the first line of the process executed.

    Sample Input 1Sample Output 1
    2
    3
    5
    76
    100
    2001
    4
    
    2 1
    3 1
    5 1
    23 2
    5 5
    5 6

    大意就是:给你一个数x——1、如果x是素数,直接输出x以及循环的步数。2、如果不是,那就x分解质因数,把所有质因数之和给x,步数+1,执行第一步。

     //Asimple
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll n, m, s, res, ans, len, T, k, num;

    bool
    is_pr(ll n) { for(int i=2; i*i<=n; i++) { if( n%i==0 ) return false; } return true; } ll solve(ll n){ ll ans = 0; int i = 2; while( n>1 ) { if( n%i==0 ) { ans += i; n /= i; if( is_pr(n) ) {//这步是关键,不写超时 ans += n; break; } } else ++i; } return ans; } void input() { while( cin >> n) { res = 1; if( n == 4 ) break; while( !is_pr(n) ) { n = solve(n); res ++; } cout << n << " " << res << endl; } } int main(){ input(); return 0; }
  • 相关阅读:
    as3单播放mp3的cpu占用和windows上的media player差不多,占用很低
    Flash的Socket
    30个高质量的免费jquery滑块PSD文件
    40个创意的女性图片照片处理实例
    40个高品质各行各业免费3D样式PSD图标文件分享
    25美丽大气的jQuery滑块插件推荐
    40个金黄色的夏季摄影色彩推荐
    GNU make manual 翻译( 一百七十二)
    GNU make manual 翻译( 一百七十四)
    GNU make manual 翻译( 一百七十三)
  • 原文地址:https://www.cnblogs.com/Asimple/p/6785476.html
Copyright © 2011-2022 走看看