题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=2866

题意:在区间[2,L]内,有多少个素数p,满足方程有解。

分析:

原方程变为: n^(b-1) * (p+n) = m ^ b。

一开始,我们会想,这个方程在什么时候是有解的呢??

肯定当左边式子能够凑成形如  X^b 这样的式子对不对??

那么,也就是说,一定不存正整数k使得n = k*p。

即当且仅当gcd(n^(b-1),(p+n)) = 1时方程有解。

为什么??

我们利用反证法可以进行证明:

假设 gcd(n^(b-1) , (p+n)) != 1

则一定存在一个正整数k,使得 n = k*p。

则该等式转化为: (k+1)* k ^ (b-1) * p^b = m ^ b;

要使等式两边相等,那么(k+1)*k^(b-1)必须配成幂次b的形式。

又因为gcd(k,k+1) = 1。

所以它两无公因子,无法配成x的b次方形式。

所以当gcd(n^(b-1) , (p+n) )  != 1时该方程无解。

通过上面的证明,我们知道该方程有解的条件。

设 n = x ^ b,  p+n = y^b,

则 m = x ^(b-1) * y   ,  且p = y^b - x^b;

因为p = y^b-x^b = (y-x)*(y^(n-1)+y^(n-2)*x+...+x^(n-1)),

对于上面的式子来自幂方差公式: (a^n - b^n) =(a-b)(a^(n-1) + a^(n-2)*b + ... + b^(n-1))

所以 (y-x)|p ,又因为p为质数, 所以能整除p的只有1与p本身,很明显的, y-x != p ,所以  y-x=1, --->  y = x+1;

所以p = (x+1)^b-x^b;

所以我们只要枚举x然后计算出p并且判断其是否为质数即可。

下面帖代码,有问题留言。

    #include<cstdio>
#include<cstring>
typedef long long LL; bool is_prime(int n){
if(n <= )return false;
for(int i = ; i*i <= n; i++)
if(n % i == )return false;
return true;
} int main(){
int L;
while(~scanf("%d",&L)){
int ans = ;
int k = ;
while((LL)*(k+)*(k+)*(k+)-k*k*k <= L){
if(is_prime((LL)*(k+)*(k+)*(k+) - k*k*k))ans++;
k++;
}
if(ans == )printf("No Special Prime!\n");
else printf("%d\n",ans);
}
return ;
}

HDU2866 Special Prime的更多相关文章

  1. 题解-hdu2866 Special Prime

    Problem hdu-2866 题意:求区间\([2,L]\)有多少素数\(p\)满足\(n^3+pn^2=m^3\),其中\(n,m\)属于任意整数 Solution 原式等价于\(n^2(p+n ...

  2. 【HDU】2866:Special Prime【数论】

    Special Prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  3. Special Prime

    Special Prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  4. hdu-2886 Special Prime---数论推导

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2866 题目大意: 问你1到L中有多少个素数满足n^3 + p*n^2 = m^3(其中n,m为大于1 ...

  5. 字符串经典的hash算法

    1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1). 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无 ...

  6. 几种经典的Hash算法的实现(源代码)

    来源声明: http://blog.minidx.com/2008/01/27/446.html 先保存下来,以备后面研究,现在还看不懂! 哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这 ...

  7. hash算法和常见的hash函数 [转]

       Hash,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值. 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能 会散列成相同的输出,而不 ...

  8. Java 素数 prime numbers-LeetCode 204

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

  9. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

随机推荐

  1. 微信被动回复用户消息-文本消息-springmvc环境下自动生成xml

    微信被动回复用户消息-文本消息-springmvc环境下自动生成xml springmvc - 大牛! private Object subscribeMessage(Scan scan) { Sca ...

  2. UI设计---&gt;全心全意为人民服务的宗旨----&gt;注重客户体验---&gt;软件持久的生命力

    UI即User Interface(用户界面)的简称. UI设计是指对软件的人机交互.操作逻辑.界面美观的总体设计. 好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适简单.自由.充分 ...

  3. P1155 双栈排序(二分图染色)

    P1155 双栈排序(二分图染色) 题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一 ...

  4. B2241 打地鼠 暴力模拟

    大水题!!!30分钟AC(算上思考时间),直接模拟就行,加一个判断约数的剪枝,再多加几个剪枝就可以过(数据巨水) 我也就会做暴力的题了. 题干: Description 打地鼠是这样的一个游戏:地面上 ...

  5. WPF:通过Window.DataContext实现窗口间传值

    通过Window.DataContext实现窗口之间的传值,特别是跨窗口控件的联动,具有无可比拟的优势.实现方法如下: 1.  MainWindow.xaml,在Window.DataContext中 ...

  6. 利用tensorflow实现前向传播

    import tensorflow as tf w1 = tf.Variable(tf.random_normal((2, 3), stddev=1, seed=1))w2 = tf.Variable ...

  7. 数据结构C++,栈的实现

    #include <iostream>#include <cstdlib> template<class T>void changeLength1D(T*& ...

  8. [Apple开发者帐户帮助]六、配置应用服务(2)创建DeviceCheck私钥

    要验证与DeviceCheck服务的通信,您将使用启用了DeviceCheck的私钥. 首先创建并下载启用了DeviceCheck 的私钥.然后获取密钥标识符(kid)以创建JSON Web令牌(JW ...

  9. [Apple开发者帐户帮助]一、开始(3)账户信息

    您帐户中显示的部分取决于您是否拥有免费帐户或是否已注册付费程序(Apple Developer Program或Apple Developer Enterprise Program).此外,您可以在这 ...

  10. 爬虫框架Scrapy与Web框架Django结合

    在做两者结合之前,需要先准备一个可以独立运行的Scrapy框架和一个可以独立运行的Django框架! 当准备好这两个框架之后,就可以做两者的结合了. 一. 把scrapy框架,移动到Django框架的 ...