牛客多校赛第三场-h题

8. Eddy has solved lots of problem involving calculating the number of coprime pairs within some range. This problem can be solved with inclusion-exclusion method. Eddy has implemented it lots of times. Someday, when he encounters another coprime pairs problem, he comes up with diff-prime pairs problem. diff-prime
pairs problem isgiven N, you need to find the number of pairs (i, j), where  and  are both prime and i ,j ≤ N. gcd(i, j) is the greatest common divisor of i and j. Prime is an integer greater than 1 and has only 2 positive divisors.
Eddy tried to solve it with inclusion-exclusion method but failed. Please help Eddy to solve this problem.
NOWCODER.COM 牛客网-中国最大IT笔试/面试题库
牛客出品-http://www.nowcoder.com
Note that pair (i1, j1) and pair (i2, j2) are considered different if i1 ≠ i2 or j1 ≠ j2. 输入描述: Input has only one line containing a positive integer N.
1 ≤ N ≤ 107 输出描述: Output one line containing a non-negative integer indicating the number of diff-prime pairs (i,j) where i, j ≤ N 示例1: 输入 3 输出 2 示例2: 输入 5 输出 6

 

#include<stdio.h>
#include<string.h>
int prime[1000005];
int main()
{
	int k=0;
	int ans=0;
	int n;
	scanf("%d",&n);
	memset(prime,1,sizeof(prime)); 
	prime[0]=0;
	prime[1]=0;
	for(int i=1;i<=n;i++)
	{
		if(prime[i])
		{
			ans=ans+k*(n/i);//前面k个素数和素数i同时1-(n/i)组成一对(i,j),由于k从零开始故两个相同的素数这种情况已被删除; 
			for(int j=i;j<=n;j+=i)
			prime[j]=0;
			k++;	
		}			
	}
	printf("%d",ans*2);
 } 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值