编写程序找出所有小于 1,000 的孪生素数。显示输出如下: (3,5) (5,7)
Write a program to find all twin primes less than 1,000. Display the output as follows: (3,5) (5,7)
我目前正在尝试编写一个程序来查找
所有小于 1,000 的孪生素数。然后显示输出如下(3,5)(5,7).......(etc)
到目前为止,我只有查找素数的代码,我不确定我应该做什么,不仅要找到孪生素数,还要正确打印所有这些数。非常感谢任何建议,并在此先感谢您!到目前为止,这是我的代码。
int a =0;
int b =0;
String d = "";
for (a = 1; a <= 100; a++) {
int counter = 0;
for (b = a; b >= 1; b--) {
if (a % b == 0) {
counter = counter + 1;
}
}
if (counter == 2) {
w = w + a + " ";
// ..
查看 this。它要求输入,但将 p
更改为 1
,将 q
更改为 100
(在 main
内)。然后删除行号 30-33
。它还会根据需要打印出孪生素数。
使用定义
Twin Prime numbers are a pair of numbers which are both prime and
their difference is 2.
问题主要是确定 1 到 1000 之间的所有素数,然后寻找上述意义上的双胞胎。
确定如此小区间的素数的一种简单方法是埃拉托色尼筛法。它在 O(n log log n) 操作中运行并且需要 O(n) 内存。
但即使你不知道这个方法,你也可能成功地暴力破解这个问题实例 n = 1000,一个简单的除法应该在大约 O(n^ 2) 操作。
//概念是除了2和3之外每个质数都是(6n-1)或(6n+1)形式
#include<iostream>
using namespace std;
int fact(unsigned long long int );
int main(){
unsigned long long int n;
cout<<"Enter the number upto which you want prime numbers\n";
cin>>n;
cout<<"List of prime number is as follows"<<endl;
cout<<"(3,5)";
for(unsigned long long int i=5;i<=n;i+=6){
int d,e;
d=fact(i);
e=fact((i+2));
if(d==1 && e==1)
cout<<",("<<i<<","<<(i+2)<<")";
}
cout<<"\n";
return 0;
}
int fact(unsigned long long int x){
if(x%2==0 || x%3==0)
return 0;
for(unsigned long long int j=5;j*j<=x;j+=6)
{
if(x%j==0 || x%(j+2)==0)
return 0;
}
return 1;
}
这是我的蓝色孪生素数代码 java。
但是100以内怎么打印顺序正确
public class twin_prime
{
public static void main(int n)
{
int i,j;
int p=n;
int q=n+2;
int c=0;
int co=0;
int f=q;
System.out.println(" the no you had input is "+n);
System.out.println("the second number will be taken at a difference of 2 ");
System.out.println("the second number is :"+q);
for(i=1;i<=n;i++)
{
if(p%i==0)
{
c=c+1;
}
}
if(c==2)
{
System.out.println("no. is prime");
}
for(j=1;j<=q;j++)
{
if(f%j==0)
{
co=co+1;
}
}
if(co==2)
{
System.out.println("no. is twin prime");
}
}
}
我不知道这段代码可以解决你的问题。如果我理解你的任务,那么这段代码可以帮助你。 (对不起,我的英文不太好!)希望能帮到你。
public class twinPrime {
public static void main(String[] args){
int ct=0, n=0, i=1, j=1, db=0;
int[] array= new int[25]; // 1 between 100 there are 25 pieces
System.out.println("Twin primes paires:");
while(n<array.length) {
j=1;
ct=0;
while(j<=i) {
if(i%j==0) {
ct++;
}
j++;
}
if(ct==2) {
//System.out.println(i);
array[n]=i; //All prime numbers between 1-100
n++;
}
i++;
}
for( int a=0; a<array.length-1;a++) { //You need array.length-1 because You won't able to array[26]-array[27] because array[27] doesn't exist
//System.out.println("Prime Numbers:"+array[a]);
if(array[a]-array[a+1]==-2) {
db++;
System.out.println(array[a]+"\t|\t"+array[a+1]);
}
}
System.out.println("Number of TwinPrime: "+db);
}
}
我目前正在尝试编写一个程序来查找 所有小于 1,000 的孪生素数。然后显示输出如下(3,5)(5,7).......(etc)
到目前为止,我只有查找素数的代码,我不确定我应该做什么,不仅要找到孪生素数,还要正确打印所有这些数。非常感谢任何建议,并在此先感谢您!到目前为止,这是我的代码。
int a =0;
int b =0;
String d = "";
for (a = 1; a <= 100; a++) {
int counter = 0;
for (b = a; b >= 1; b--) {
if (a % b == 0) {
counter = counter + 1;
}
}
if (counter == 2) {
w = w + a + " ";
// ..
查看 this。它要求输入,但将 p
更改为 1
,将 q
更改为 100
(在 main
内)。然后删除行号 30-33
。它还会根据需要打印出孪生素数。
使用定义
Twin Prime numbers are a pair of numbers which are both prime and their difference is 2.
问题主要是确定 1 到 1000 之间的所有素数,然后寻找上述意义上的双胞胎。
确定如此小区间的素数的一种简单方法是埃拉托色尼筛法。它在 O(n log log n) 操作中运行并且需要 O(n) 内存。
但即使你不知道这个方法,你也可能成功地暴力破解这个问题实例 n = 1000,一个简单的除法应该在大约 O(n^ 2) 操作。
//概念是除了2和3之外每个质数都是(6n-1)或(6n+1)形式
#include<iostream>
using namespace std;
int fact(unsigned long long int );
int main(){
unsigned long long int n;
cout<<"Enter the number upto which you want prime numbers\n";
cin>>n;
cout<<"List of prime number is as follows"<<endl;
cout<<"(3,5)";
for(unsigned long long int i=5;i<=n;i+=6){
int d,e;
d=fact(i);
e=fact((i+2));
if(d==1 && e==1)
cout<<",("<<i<<","<<(i+2)<<")";
}
cout<<"\n";
return 0;
}
int fact(unsigned long long int x){
if(x%2==0 || x%3==0)
return 0;
for(unsigned long long int j=5;j*j<=x;j+=6)
{
if(x%j==0 || x%(j+2)==0)
return 0;
}
return 1;
}
这是我的蓝色孪生素数代码 java。
但是100以内怎么打印顺序正确
public class twin_prime
{
public static void main(int n)
{
int i,j;
int p=n;
int q=n+2;
int c=0;
int co=0;
int f=q;
System.out.println(" the no you had input is "+n);
System.out.println("the second number will be taken at a difference of 2 ");
System.out.println("the second number is :"+q);
for(i=1;i<=n;i++)
{
if(p%i==0)
{
c=c+1;
}
}
if(c==2)
{
System.out.println("no. is prime");
}
for(j=1;j<=q;j++)
{
if(f%j==0)
{
co=co+1;
}
}
if(co==2)
{
System.out.println("no. is twin prime");
}
}
}
我不知道这段代码可以解决你的问题。如果我理解你的任务,那么这段代码可以帮助你。 (对不起,我的英文不太好!)希望能帮到你。
public class twinPrime {
public static void main(String[] args){
int ct=0, n=0, i=1, j=1, db=0;
int[] array= new int[25]; // 1 between 100 there are 25 pieces
System.out.println("Twin primes paires:");
while(n<array.length) {
j=1;
ct=0;
while(j<=i) {
if(i%j==0) {
ct++;
}
j++;
}
if(ct==2) {
//System.out.println(i);
array[n]=i; //All prime numbers between 1-100
n++;
}
i++;
}
for( int a=0; a<array.length-1;a++) { //You need array.length-1 because You won't able to array[26]-array[27] because array[27] doesn't exist
//System.out.println("Prime Numbers:"+array[a]);
if(array[a]-array[a+1]==-2) {
db++;
System.out.println(array[a]+"\t|\t"+array[a+1]);
}
}
System.out.println("Number of TwinPrime: "+db);
}
}