j

来源:互联网 发布:yy美颜软件下载 编辑:程序博客网 时间:2024/06/10 03:45

Problem J: 质方数

Description

小z很喜欢研究各种各样的数字,最近他迷上了质数和平方数,他把一个质数的平方命名为”质方数”,现在他想知道,给出一个正整数,距离这个正整数最近的质方数是什么?(如果有2个距离相等的质方数,选择较小的一个)

Input

输入数据组数为T(T<=50),每组数据输入一个正整数n,其中1<=n<=100,000,000;

Output

对于每个测试样例,输出距离最近的质方数,每个样例占一行。

Sample Input

238

Sample Output

49

Problem J: 质方数

Description

小z很喜欢研究各种各样的数字,最近他迷上了质数和平方数,他把一个质数的平方命名为”质方数”,现在他想知道,给出一个正整数,距离这个正整数最近的质方数是什么?(如果有2个距离相等的质方数,选择较小的一个)

Input

输入数据组数为T(T<=50),每组数据输入一个正整数n,其中1<=n<=100,000,000;

Output

对于每个测试样例,输出距离最近的质方数,每个样例占一行。

Sample Input

238

Sample Output

49


#include<stdio.h>#include <math.h>#include <algorithm>using namespace std;#define N 10005long long int T,n,a[N];int sushu(int n){    for(int i=2; i<=sqrt(n); i++)        if(n%i==0)            return 0;    return 1;}int main(){    int t=0,p;    for(int i=2; i<=10005; i++)        if(sushu(i)==1)            a[t++]=i*i;    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        if(n==1)            printf("4\n");        else        {            for(int i=0; i<t; i++)                if(a[i]>=n)                {                    p=i;                    break;                }            if( (n-a[p-1])<=(a[p]-n))                printf("%d\n",a[p-1]);            else                printf("%d\n",a[p]);        }    }    return 0;}


0 0
原创粉丝点击