日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

处女座的测验(一)(互质数)

發布時間:2024/9/3 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处女座的测验(一)(互质数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://ac.nowcoder.com/acm/contest/327/H
來源:牛客網

題目描述 :


/*
做這題首先要明確怎么樣的一對互質數會滿足題目要求;
(素數序列中任意一對都互質)

T(2*3) = T(6)=4;(1,2,3,6)

再寫幾個素數對相乘:
比如 :

T(5*7) = T(35) = 4;(1,5,7,35這四個因子) T(11*13) = T(143) = 4; (1,11,13,143)

所以可以看出任意一對素數的乘積有4個因子,并且所得(不含相同素數因子的一對素數,比如23,35重復使用了3這樣不行)乘積序列中任意一對互質(6,35互質,6,143互質,35,143互質)
但是現在題目要求任意一對因子個數大于10的…
從上面寫的幾個素數對相乘的因子中可以推出,任意兩對素數對的乘積再乘積所得的乘積會有16個因子,并且這個

乘積值序列中任意一對也都互質


所以只要找出4000個素數,最前一個和最后一個素數(保證不重復使用同一個值就行)相乘的積就是答案的2000分之一,類推,第二個與倒數第二個相乘,…最終會得到2000個。
(用素數篩法找出前4000個素數效率會更高)
*/
Ac_code:

#include <iostream> #define N 50000 using namespace std; int a[N+5]; int main() {for(int i = 2; i <= N ; i++){for(int j = i*2; j <= N; j+=i){a[j] = 1;}}int j = 0;for(int i = 2; i <= N && j < 4000; i++){if(!a[i])a[j++] = i;}for(int i = 0,j = 3999;i < 2000 ; i++,j--)cout<<a[i]*a[j]<<endl;return 0; }

總結

以上是生活随笔為你收集整理的处女座的测验(一)(互质数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。