题目链接:Distinct Primes

如果一个数。至少有三个因子是素数、。那么这个数就是prime num.30和42是前两个prime num.问你第n个这种数是谁。(1<=n<=1000)。

用质因子分解。判断每个数有多少个因子是质数。如果超过3个旧记录下来、记录前1000个。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
using namespace std; typedef long long ll;
#define N 5000
int isprime[N];
ll prime[N], nprime, factor[N], numfactor[N], ct; void makeprime() // 打出1到N的素数表。
{
int i, j, temp;
nprime = ;
memset(isprime, , sizeof(isprime));
isprime[] = ;
temp = sqrt(N+0.0);
for (i=; i<=temp; ++i)
{
if (isprime[i])
{
for (j=i+i; j<N; j+=i)
{
isprime[j] = ;
}
}
}
for (int i=; i<N; ++i)
{
if (isprime[i]) prime[nprime++] = i;
}
} int divide(int n) // 对n进行质因子分解。ct表示质因子的个数、
{
int i;
int temp = sqrt(n+0.0);
ct = ;
memset(numfactor, , sizeof(numfactor));
for (i=; i<=nprime; ++i)
{
if (prime[i] > temp) break;
if (n % prime[i] == )
{
factor[++ct] = prime[i];
while(n % prime[i] == )
{
n /= prime[i];
}
}
}
if (n != )
{
factor[++ct] = n;
}
return ct;
} int main()
{
int num[], cnt = ;
makeprime();
for (int i=; ; ++i)
{
if (divide(i) >= ) num[cnt++] = i;
if (cnt > ) break;
}
int t, n;
cin >> t;
while(t--)
{
cin >> n;
cout << num[n-] << endl;
}
return ;
}

UVALIve 5987 素数的更多相关文章

  1. UVALive 5987

    求第n个数,该数满足至少由3个不同的素数的乘机组成 #include #include #include #include #include using namespace std; int prim ...

  2. 【筛法求素数】【推导】【组合数】UVALive - 7642 - Prime Distance

    题意:n个格子,m个球,让你把球放入某些格子里,使得所有有球的格子之间的距离(abs(i-j))均为素数 ,让你输出方案数. 只占一个格子或者两个格子显然可行. 占有三个格子的情况下,则必须保证其中两 ...

  3. HDOJ 1164 Eddy's research I(拆分成素数因子)

    Problem Description Eddy's interest is very extensive, recently he is interested in prime number. Ed ...

  4. 素数测试算法(基于Miller-Rabin的MC算法) // Fermat素数测试法

    在以往判断一个数n是不是素数时,我们都是采用i从2到sqrt(n)能否整除n.如果能整除,则n是合数;否则是素数.但是该算法的时间复杂度为O(sqrt(n)),当n较大时,时间性能很差,特别是在网络安 ...

  5. ACM -- 算法小结(十)素数的两种打表法

    素数的两种打表法 下面介绍两种素数打表法,由于是两年前留下的笔记,所以没有原创链接~~ @_@!! 第一种疯狂打表法: #include<stdio.h> #include<math ...

  6. Help Hanzo (素数筛+区间枚举)

    Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000).     (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼 ...

  7. Java 素数 prime numbers-LeetCode 204

    Description: Count the number of prime numbers less than a non-negative number, n click to show more ...

  8. 求解第N个素数

    任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sie ...

  9. 使用BitArray判断素数

    首先显示1024范围内的所有素数,然后显示输入的数是否是素数.1024 是代码中计算的素数的范围,可以修改.计算平方根,是为了确定一个基数的范围.1024的平方根是32,两个超过32 的数相乘,肯定大 ...

随机推荐

  1. 20145118 《Java程序设计》第6周学习总结

    20145118 <Java程序设计>第6周学习总结 教材学习内容总结 1.数据依靠串流在目的地与来源地之间传输,无论来去如何,只要取得InputStream或OutputStream的实 ...

  2. vs2012添加自定义资源步骤

    1.新建Win32工程 2.选中Resource Files -> add resource 点击打开 这里需要你填写一个Resource Type ,假如你之前已经有了,就直接输入,没有的话在 ...

  3. C#调用非托管dll

    以C#开发周立功CAN举例,在官网下载了周立功的demo 一.C++头文件样子 //接口卡类型定义#define VCI_PCI5121 1 //一些结构体定义 typedef struct tagR ...

  4. AMS1117稳压模块

    AMS1117有降压稳压的作用.我们使用的是AMS1117-5,输出5V电压. 理论参数: 输出条件 最小值 理论值 最大值 理论电路图: 引脚图:

  5. 棋盘状态压缩dp

    状态压缩入门DP整理 只针对入门 一般都是用2进制的方法,压缩成一个数,所以n的范围都会特变小 一些套路 状态一般是很多的,可以搜索或者位运算筛选一下,基本都是这样的吧 当要存两个状态或者数组存不下的 ...

  6. 史丰收速算|2014年蓝桥杯B组题解析第四题-fishers

    史丰收速算 史丰收速算法的革命性贡献是:从高位算起,预测进位.不需要九九表,彻底颠覆了传统手算! 速算的核心基础是:1位数乘以多位数的乘法. 其中,乘以7是最复杂的,就以它为例. 因为,1/7 是个循 ...

  7. 全球变暖|2018年蓝桥杯B组题解析第九题-fishers

    标题:全球变暖 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. .. ...

  8. 使用caffenet微调时的一些总结

    1,比较笨的方法生成图片列表(两类举例)data/myself/train 目录下 find -name cat.\*.jpg |cut -d '/' -f2-3 >train.txtsed - ...

  9. python 将16进制转化为2进制

    >>> x='123abc' >>> b=bin())[:] >>> print(b)

  10. Jmeter 分布式压力测试

      JMeter中进行分布式测试 作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, ...