翻译哥德巴赫猜想

zhanghuizi123 2011-09-12 09:37:06
请问 用C语言翻译哥德巴赫猜想
...全文
238 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘缘udbwcso 2011-09-13
  • 打赏
  • 举报
回复

/**
*任何大于2的偶数均为两个素数之和
*验证4到10000
*/
#include <stdio.h>
#include <math.h>
//判断num是不是素数,是则返回1
int isPrime(int num)
{
int d = 3;
if(num == 2 || num == 3)
return 1;
if(num%2 == 0)//num为偶数
return 0;
//num为奇数
while(d <= sqrt(num) && num % d != 0)
{
d += 2;
}
if(num % d != 0)
return 1;
return 0;
}

//判断是不是两个素数之和,如果是则输出并返回1
int isSumOfPrime(int even)
{
int sumOfPrime = 0;
int factor1 = 0;
int factor2 = 0;
for(int i = 2; i <= even/2; i++)
{
factor1 = i;
factor2 = even - i;
if(isPrime(factor1)==1 && isPrime(factor2)==1)
{
printf("%d = %d + %d\n", even, factor1, factor2);
sumOfPrime = 1;
break;
}
}
return sumOfPrime;
}

int main()
{
int i;
for(i = 4; i <= 10000; i += 2)
{
isSumOfPrime(i);
}
return 0;
}


qq149850508 2011-09-13
  • 打赏
  • 举报
回复
while(d <= sqrt((double)num) && num % d != 0)
{
d += 2;
}
5楼这个加上重载类型,不然(VS2010)编译不过
sailshiny 2011-09-12
  • 打赏
  • 举报
回复
有点深奥哦!
尘缘udbwcso 2011-09-12
  • 打赏
  • 举报
回复
因为刚学,写的比较差,
其实只能验证一定范围的数是否满足
尘缘udbwcso 2011-09-12
  • 打赏
  • 举报
回复
用JAVA做过

package prime;

public class Prime {
//判断num是不是素数,是则返回true
public boolean isPrime(int num){
if(num == 2 || num == 3)
return true;
if(num%2 == 0)//num为偶数
return false;

//num为奇数
int d = 3;
while(d <= Math.sqrt(num) && num % d != 0){
d += 2;
}
if(num % d != 0)
return true;
return false;
}

}
package prime;

/**
* 任何大于2的偶数均为两个素数之和
* @author Administrator
*
*/

public class Goldbach {
private int count;

public void setCount(int count){
this.count = count;
}
public int getCount(){
return count;
}
public void inc(){
count++;
}
//public void output(){
//System.out.println(count);
//}


//判断是不是两个素数之和,如果是则输出并返回true
public boolean isSumOfPrime(int even){
boolean sumOfPrime = false;
Prime prime = new Prime();
int factor1 = 0;
int factor2 = 0;
for(int i = 2; i <= even/2; i++){
factor1 = i;
factor2 = even - i;
if(prime.isPrime(factor1) && prime.isPrime(factor2)){
System.out.println(even + " = " + factor1 + " + " + factor2);
sumOfPrime = true;
break;
}
}
return sumOfPrime;
}
public static void main(String[] args){
Goldbach num = new Goldbach();
num.setCount(0);
for(int i = 4; i <= 10000; i += 2){
if(num.isSumOfPrime(i))
num.inc();
}
//num.output();
}

}

zishare 2011-09-12
  • 打赏
  • 举报
回复
什么意思?
任何一个偶数,可以分解为两个质数之和

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧