ADA Ⅱ型数

来源:互联网 发布:使命召唤ol优化补丁 编辑:程序博客网 时间:2024/04/27 23:13

题目描述

 ADAⅡ型数是指能表达成p^2q^3两者之乘积的整数,pq均大于1且不相等。72=2^3*3^2,是最小的ADAⅡ型数。给定一个整数n,判定其是否为ADAⅡ型数。

输入

少于4000行数据组成,每行一个整数n0<n<2^31)。

输出

 每个整数n对应一行输出,如果是ADAⅡ型数,则输出一行YES,否则输出一行NO

样例输入

172

样例输出

NOYES
#include<stdio.h>int main(){long long  i,a,b,tep,low,high,mid,n;while (scanf("%lld", &n)!=EOF){for (i = 2; i <=816; i++)  //  另一个数最小为2^2=4  所以这个数的立方最大为 2^29=536870912   815*815*815=541343375{a = i*i*i;if (n%a != 0)continue;//判断另一个数是否整数tep = n / a; high = tep;low = 2;while(low<=high){mid = (low + high)/2;b = mid*mid;if (b >= tep){high = mid-1;}else{low = mid + 1;}}if ((low*low == tep) && (low != i)) break;//  low 另一个值}if (i <= 816){printf("YES\n");}else{printf("NO\n");}}return 0;}

0 0
原创粉丝点击