处女座的测验(一)

题目:处女座的测验(一)

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld

题目描述 

处女座进行了一场c语言的考试,要求很简单,输出2000个正整数,并且满足以下条件:

1.       任意两个数互质

2.     任意两个数x,y,满足 ,其中 为n的因子的个数
 
举例:6的因子有1,2,3,6,所以 τ(6)=4τ(6)=4

输入描述:

本题没有输入

输出描述:

2000行,每行一个正整数

输出的每个整数都必须在1-4*108之间
如果有多组答案,输出任意一组即可。

题解:

考点:质数,构造

τ 是积性函数,x,y互质,τ(x⋅y)=τ(x)⋅τ(y) 只需保证τ(x)≥4即可,找出前4000个质数构造即可。取第1个质数个第 4000个质数相乘,取第2个质数和第3999个质数相乘……这样最大的数在 4e8以内。

代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define maxn 1000000
 4 int pri[maxn+5];
 5 void getprime()
 6 {
 7     int i,j;
 8     for (i=2;i<=maxn;i++)
 9     {
10         if (pri[i]==0) pri[++pri[0]]=i;
11         for (j=1;j<=pri[0] && pri[j]<=maxn/i;j++)
12         {
13             pri[pri[j]*i]=1;
14             if (i%pri[j]==0) break;
15         }
16     }
17 }
18  
19 int main()
20 {
21     getprime();
22     for (int i=1;i<=2000;i++)
23     {
24         printf("%d\n",pri[i]*pri[4001-i]);
25     }
26     return 0;
27 }
View Code

 

转载于:https://www.cnblogs.com/liuyongliu/p/10316559.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值