反素數 解題報告

2021-10-10 04:39:31 字數 976 閱讀 6708

題目鏈結

題目大意:設函式f(x)表示x的約數個數。對於乙個正整數x,若滿足任意09。

題目分析

1.首先,1 ~ n的最大反質數一定是1 ~ n中約數個數最多的數中最小的乙個。下面給出證明:

2.x為反質數的必要條件是:x分解質因數後可以寫成2c1 * 3c2 * 5c3 * 7c4 * 11c5 * 13c6 * 17c7 * 19c8 * 23c9 * 29c10。並且c1≥c2≥c3≥c4≥c5≥c6≥c7≥c8≥c9≥c10。下面給出證明:

3.綜上,我們只需要dfs搜尋答案即可,因為實際上的搜尋範圍很小,所以並不會超時。

正解程式

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

const ll maxn=

100010

; ll prime[maxn/10]

,count1=

0,n;

bool vis[maxn]

;void

oula()

}}ll ans=

0x7fffffff

,max=-1

;void

dfs(ll k,ll val,ll last,ll times)

else

if(max==times)

ans=

min(val,ans)

;for

(ll i=

1;i<=last;i++)}

intmain()

python打反素數 反素數求解 反素數打表

問題描述 對於任何正整數x,起約數的個數記做g x 例如g 1 1,g 6 4.如果某個正整數x滿足 對於任意i 0 現在給乙個n,求出不超過n的最大的反素數.比如 輸入1000 輸出 840 思維過程 求 1.n 中約數在大的反素數 求約數最多的數 如果求約數的個數 756 2 2 3 3 7 1...

PAT 1013 數素數 解題報告

1013 數素數 20分 令 p i 表示第 i 個素數。現任給兩個正整數 m n 10 4 請輸出 p m 到 p n 的所有素數。輸入在一行中給出 m 和 n,其間以空格分隔。輸出從 p m 到 p n 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。5 2711 ...

反素數求解 反素數打表

問題描述 對於任何正整數x,起約數的個數記做g x 例如g 1 1,g 6 4.如果某個正整數x滿足 對於任意i 0現在給乙個n,求出不超過n的最大的反素數.比如 輸入1000 輸出 840 思維過程 求 1.n 中約數在大的反素數 求約數最多的數 如果求約數的個數 756 2 2 3 3 7 1 ...