反素数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6406 Accepted Submission(s): 3804
Problem Description
反素数就是满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x的因子个数),则x为一个反素数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。
Input
第一行输入n,接下来n行测试数据
输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].
输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].
Output
输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.
Sample Input
3 2 3 1 10 47 359
Sample Output
2 6 240Hint2的因子为:1 2 10的因子为:1 2 5 10思路:打表过,然而貌似和素数没有什么关系#include<bits/stdc++.h> using namespace std; int m[5005]; int number(int n) { int ans=0,i; for(i=1; i*i<n; i++) if(n%i==0) ans+=2; if(i*i==n) ans++; return ans; } void fun() { for (int i=1; i<=5000; i++) m[i]=number(i); } void solve() { int a,b,ii,n; scanf("%d",&n); while(n--) { scanf("%d%d",&a,&b); int minn=0; for (int i=a; i<=b; i++){ if(m[i] > minn){ minn=m[i]; ii=i; } } printf("%d\n",ii); } } int main() { fun(); solve(); return 0; }