杭电hdu 3826 Squarefree number 数论
来源:互联网 发布:知楚仪器 编辑:程序博客网 时间:2024/04/30 04:15
http://acm.hdu.edu.cn/showproblem.php?pid=3826
数论的应用
1000000*1000000*10000000=10^18;所以我们只要找出1000000以内的素数,然后在这里找是否有素因子平方。大于这个范围的话,我们就可以认为这个数n最多可能由两个素数成绩组成的,然后判断是否有平方因子。
//数论 素数筛选#include <stdio.h>#include <math.h>#include <string.h>#define MAX 1000001bool isprime[MAX];int prime[78600];int k = 0;void init(){memset(isprime, true, sizeof(isprime));int i, j;for(i = 2; i <= MAX; i ++){for(j = 2; j <= MAX && i * j <= MAX; j ++){isprime[i * j] = false;}}prime[k ++] = 2;for(i = 3; i <= MAX; i += 2){if(isprime[i]){prime[k ++] = i;//printf("%d\n", i);}}}int main(){// freopen("input.txt", "r", stdin);//freopen("output.txt", "w", stdout);int cas, t, i;__int64 n, tmp;bool flag;init();scanf("%d", &t);for(cas = 1; cas <= t; cas ++){scanf("%I64d", &n);flag = true;for(i = 0; i < k && (__int64)prime[i]*prime[i] <= n; i ++){if(n % ((__int64)prime[i] * prime[i]) == 0){//flag = false;break;}while(n % prime[i] == 0)n /= prime[i];}tmp = (__int64)sqrt(n + 0.0);if(n !=1 && (tmp*tmp == n))flag = false;if(flag)printf("Case %d: Yes\n", cas);else printf("Case %d: No\n", cas);}return 0;}
- 杭电hdu 3826 Squarefree number 数论
- hdu 3826 Squarefree number
- HDU 3826 Squarefree number
- HDU-3826-Squarefree number
- HDU 3826 Squarefree number
- Squarefree number + 数论
- HDU 3826 Squarefree number:题目解答源码
- HDU 3826 Squarefree number (素数)
- Squarefree number HDU
- HDU 3826 Squarefree number 简单的数论题
- HDU 3826 Squarefree number 判断无平方因子的数
- Squarefree number
- HDU 3826 Squarefree number (求因子里没有平方数的数)
- hdu3826 Squarefree number
- 【BNUOJ】Squarefree number (数学)
- 杭电 2854Central Meridian Number 完全不懂的数论
- 杭电ACM HDU 3346 Lucky Number
- 杭电 HDU 4608 I-number
- JPA注解
- Hibernate缓存机制
- jQuery事件处理机制
- 手机没电了
- Counterfeit Dollar(P1013)
- 杭电hdu 3826 Squarefree number 数论
- 关于Android中的乱码
- HDU 2147
- jQuery动画
- C++文件读写总结
- temp
- Android自定义移动网络接入点
- 如何用自己电脑架设服务器!自助建站将不再是梦想
- 遇到了这样一个中文乱码的问题