HDOJ找新朋友(hash)
Posted som_nico
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDOJ找新朋友(hash)相关的知识,希望对你有一定的参考价值。
找新朋友
http://acm.hdu.edu.cn/showproblem.php?pid=1286
题意:输入T 有T组
每组输入n 问1~n之间有多少个跟n有大于公约数的数。
思路:找n的约数m,然后把m的所有小于n的倍数都找出来a[m]=1
#include<stdio.h> #include<string.h> #define M 32777 int a[M]; int main() { int n,m,sum,i,j; scanf("%d",&n); while(n--) { scanf("%d",&m); memset(a,0,sizeof(a)); for(i=2;i<=m/2;i++) { if(m%i==0) { for(j=i;j<m;j+=i) a[j]=1; } } sum=0; for(i=2;i<m;i++) if(a[i]) sum++; printf("%d\n",m-sum-1); } return 0; }
以上是关于HDOJ找新朋友(hash)的主要内容,如果未能解决你的问题,请参考以下文章