首页 > 其他分享 >HDU-1286-找新朋友

HDU-1286-找新朋友

时间:2023-02-02 11:37:19浏览次数:60  
标签:HDU 1286 return 朋友 int 素数 3x maxn 6x


​题目链接​

找新朋友

Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 5 Accepted Submission(s) : 2
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。
Input
第一行是测试数据的组数CN(Case number,1

#include<stdio.h>
#include<string.h>
#define maxn 35000
int a[maxn];
int main()
{
int cn;
scanf("%d",&cn);
while(cn--)
{
int n,i,j,ans=0;
scanf("%d",&n);
memset(a,-1,sizeof(a));
for(int i=2;i<n;i++)
{
if(n%i==0)
for(j=1;j*i<n;j++)
a[i*j]=0;
} //此处是素数打表,经常用到的具体原理可以查阅欧拉函数详解
for(i=2;i<n;i++)
if(a[i]==0)
ans++;
printf("%d\n",n-ans-1);
}
return 0;
}
//这里在介绍几种素数查找的方法(这几个都是自定义函数)
#include<stdio.h>
int isprime(int n)
{
if(n<2) return 0;
for(int i=2; i*i<n; i++)
if(n%i==0) return 0;
return 1;
}
int main()
{
}


#include<stdio.h>
int isprime(int n)
{
int i;
for(i=2;i<n/2;i++)
if(n%i==0)
break;
if(i>n/2&&n>1)
return 1;
else return 0;
}

#include<stdio.h>
#define maxn 1000000
int table[maxn];
int buildprimetable()
{
table[1]=1; //第 0 个不需要
for(int i=2;i*i<maxn;i++)
if(!table[i]) //不是素数的跳过
for(int j=i*i;j<maxn;j+=i)
table[j]=1; //包含因子 i 的不是素数,标记为 1
}


#include<stdio.h>
#define maxn 100000000
bool notprime[maxn+5];
int Screeningprime()
{
int i,j,increment[6]={0,4,0,0,0,2};
for(i=5;i*i<=maxn;i+=increment[i%6])
{
for(j=i;i*j<=maxn;j+=increment[j%6])
{
notprime[i*j]=true;
}
}
}
/*素数出现的规律:
当 n>=5 时,如果 n 为素数,那么 n mod 6 = 1 或 n mod 6 = 5,即 n 一定出现在 6x (x>=1) 两侧。
证明:
当 下 x>=1 时有如下表示方法:
......6x, 6x+1, 6x+2, 6x+3, 6x+4, 6x+5, 6(x+1), 6(x+1)+1.......
不在 6x 两侧的数为 6x+2, 6x+3, 6x+4,即 2(3x+1), 3(2x+1), 2(3x+2),他们一定不是素数,所以素数一定出现在 6x 两侧。

可以根据下面结论写代码:
若 x>=1 且 n=6x-1 或 n=6x+1不是素数,那么 n 一定不是 2和3 的倍数
证明:
因为 n=6x-1 或 n=6x+1,即 n=2(3x)-1 或 n=2(3x)+1 或 n=(3x)-1 或 n=3(2x)+1
所以 n 一定不是 2和3 的倍数


标签:HDU,1286,return,朋友,int,素数,3x,maxn,6x
From: https://blog.51cto.com/u_14235050/6033406

相关文章

  • HDU-2089-不要62
    ​​点这里查看题目​​#include<stdio.h>#definemaxn1000010intf[maxn];intweishu(inta){intb=1;while(1){if(a/10==0)break;......
  • HDU-1251-统计难题(未完待续 还有两种方法还没整理)
    统计难题统计难题TimeLimit:4000/2000MS(Java/Others)MemoryLimit:131070/65535K(Java/Others)TotalSubmission(s):22667AcceptedSubmission(s):9545Proble......
  • autojs实例02-为朋友圈指定好友点赞
    声明:文章仅用于学习交流,切勿用于非法用途。一、autojs版本使用autojs版本4.1,其余版本对微信、qq、抖音有限制。下载地址:关注【产品经理不是经理】gzh,回复【autojs】即......
  • 蓝桥杯-小朋友崇拜圈
    小朋友崇拜圈班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。在一个游戏中,需要小朋友坐一个圈,每个小朋友都有自己最崇拜的小朋友在他的右手边。求满足条件的......
  • hdu:Two Rabbits(区间DP)
    ProblemDescriptionLonglongago,therelivedtworabbitsTomandJerryintheforest.Onasunnyafternoon,theyplannedtoplayagamewithsomestones.Th......
  • LCM Walk HDU - 5584
    https://vjudge.net/problem/HDU-5584题意:(x,y)可以走到(x+lcm(x,y),y),或(x,y+lcm(x,y))给定终点(ex,ey),问从起点到终点走了多少步?解:先按照题意模拟:设d=gcd(x,y),则再设......
  • 朋友别哭
    下载:(1)​​http://cn.stareastnet.com/music/netfriend/musicfile/4965.mp3​​​(2)​​http://www.gridchina.org/~ltguo/blog/archives/pybk.mp3​​有没有一扇窗,能让你不绝......
  • hdu: 改革春风吹满地(叉乘求面积)
    ProblemDescription“改革春风吹满地,不会AC没关系;实在不行回老家,还有一亩三分地。谢谢!(乐队奏乐)”话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是......
  • hdu:Shape of HDU(判断多边形凹凸)
    ProblemDescription话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,“徐队”的称呼逐渐被“徐总”所取代,海东集团(HDU)也算是名副其实了。创业......
  • hdu:"红色病毒"问题(指数型母函数用e^x指数函数来计算)
    ProblemDescription医学界发现的新病毒因其蔓延速度和Internet上传播的”红色病毒”不相上下,被称为”红色病毒”,经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶,......