UVa 11466 - Largest Prime Divisor

來源:互聯網
上載者:User

標籤:

題目:給你一個整數n(不超過14位),求出他的最大的素數因子,如果只有一個素數因子輸出-1。

分析:數論。直接打表計算10^7內的所有素數因子,然後用短除法除n,記錄最大的因子即可。

            如果最後下的數字不是1,則它就是最大的素數因子。

說明:注意n可能為負數。

#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;int visit[10000001];int prime[10000001];int main(){    memset(visit, 0, sizeof(visit));      int count = 0;      for (int i = 2; i < 10000001; ++ i) {          if (!visit[i]) prime[count ++] = i;          for (int j = 0; j < count && i*prime[j] < 10000001; ++ j)             visit[i*prime[j]] = 1;      }long long n,m;while (cin >> n && n) {if (n < 0) n = -n;int size = 0;for (int i = 0; i < count; ++ i) {if (n < prime[i]) break;if (n%prime[i] == 0) {m = prime[i];++ size;while (n%m == 0) n /= m;}}if (n != 1) {m = n;++ size;}if (size > 1) cout << m << endl;else cout << "-1" << endl;}    return 0;}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

UVa 11466 - Largest Prime Divisor

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.