重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

孪生素数java代码,孪生素数程序

求C语言输出1000对孪生素数的程序,程序对每个数只检验一次?

#include "stdio.h"

我们提供的服务有:成都网站建设、网站设计、微信公众号开发、网站优化、网站认证、济源ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的济源网站制作公司

int prime(int n){//素数

int i;

for(i=3;i*i=n;i+=2)

duif(!(n%i))

return 0;

return 1;

}

int main(int argc,char *argv[]){

int n,k;

for(k=0,n=3;k1000;n+=2)

if(prime(n) prime(n+2))

printf(++k%7 ? "%6d/%-6d " : "%6d/%-6d\n",n,n+2);

if(k%7)

printf("\n");

return 0;

}

当i==3时,(temp=(int)(sqrt(i)))==1

因为temp==1了,所以for(int j=2;j=temp;++j)的循环就直接“跳过”了,也就不会执行循环体内的程序解决办法是将for(int j=2;……)改为for(int j=1;……)将循环体内的if(i%j==0)改为if(j!=1 i%j==0)更简单的办法是不利用平方根求素数的捷径,而是直接对小于i的所有整数进行判断。

扩展资料:

素数定理说明了素数在趋于无穷大时变得稀少的趋势。而孪生素数,与素数一样,也有相同的趋势,并且这种趋势比素数更为明显。

由于孪生素数猜想的高知名度以及它与哥德巴赫猜想的联系,因此不断有学术共同体外的数学爱好者试图证明它。有些人声称已经证明了孪生素数猜想。然而,尚未出现能够通过专业数学工作者审视的证明。

参考资料来源:百度百科-孪生素数

谁能帮忙看一下

int j = 0;//用于计算孪生素数的个数for(int i=m-2;i0;i--){ if(isPrime(i) isPrime(i+2)) { System.out.println(i); j++; if(j == 2) break; }}

用Java编程,求最大孪生素数,只需要显示最大的一组!

import java.util.Scanner;

public class Test {

public static void main(String args[]) {

Scanner in = new Scanner(System.in);

int m = in.nextInt();

int b = m, a, i;

for (i=m;i5;i--) {

if (isSuShu(i)) {

b = i;

break;

}

}

for (int j=i;j5;j--) {

if (isSuShu(j)) {

a = j;

if (b - a == 2) {

System.out.println(a + "," + b);

return;

} else {

b = j;

}

}

}

}

private static boolean isSuShu(int a) {

for (int i=2;i=Math.sqrt(a);i++) {

if (a%i==0) {

return false;

}

}

return true;

}

}

用Pascal语言求出1——1000以内的孪生素数!!!!

思路:

1.定义一个“函数prime”,判断该数是否是素数;

2.主程序:

1)输出(2,3)

2)从3~999的所有奇数循环;

3)如果这个数是素数,则判断这个数+2是不是素数,如果是,则输出(这个数,这个数+2)。

程序LZ可以自己试试看。

这个定义的函数prime的思路是:

1.要判断一个数 n 是否是素数,可以从2~trunc(sqrt(n))循环,再看循环变量是否能整除 n ,如果都不能整除,则 n 是素数;

2.过程如下:

function prime(n:longint):boolean;

var i:longint;

begin

prime:=true;

for i:=2 to trunc(sqrt(n)) do

if n mod i=0 then

begin

prime:=false;

exit;

end;

end;

这段代码不优化,不过由于是1000以内,还可以。

经过上机调试,测试通过,源代码见附件。

希望对你有帮助。

C语言编程。。孪生素数

楼主的两个for循环用的不对,另外整个流程也是有问题的。改正的代码如下:

#include stdio.h

#include math.h

int main()

{

int a,b;  /* 输入的两个数据范围 */

int i,j,k;

int num=0, s;  /* 素数个数, 素数标志 */

scanf( "%d %d", a,b );

for( i=a;i+2=b;i++ )

{

s = 1;  /* 先假设i是素数 */

k = sqrt(i);

for( j=2;j=k;j++ )

{

if( i%j == 0 )

{

s = 0;  /* i不是素数 */

break;

}

}

if( s )

{

k = sqrt( i+2 );

for( j=2;j=k;j++ )

{

if( (i+2)%j == 0 )

{

s = 0;  /* i+2不是素数 */

break;

}

}

if( s )

{

++num;  /* i+2是素数 */

printf( "第%d个孪生素数[%d,%d]\n", num, i, i+2 );

}

}

}

return 0;

}

二、用GCC编译测试结果:

编写一个Java程序,输出100以内的所有孪生素数对

代码如下:

public class App {

/***

 * 判断 n 是否素数

 * @param n

 * @return

 */

static boolean isPrime(int n) {

for (int i = 2; i  n; i++) {

if (n % i == 0) {

return false;

}

}

return true;

}

public static void main(String[] args) {

for (int i = 2; i  100; i++) {

if (isPrime(i)  isPrime(i + 2)) {

System.out.println(i + "," + (i + 2));

}

}

}

}

运行结果:


本文标题:孪生素数java代码,孪生素数程序
本文链接:http://cqcxhl.com/article/hessdp.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP