双素数C代码
Twin primes C code
我正在尝试用 C 语言打印以下系列 4 6 12 18 30 42 60 72....最多 n 个。它的逻辑很简单;我们必须打印数字,使得前面和后面的数字应该是质数!但是下面的代码在打印 4 之后没有循环。下面的代码有什么问题?
#include <stdio.h>
int main(){
int n, i, j, p2, k;
int count1=0, count2=0;
printf("enter the number:\n");
scanf("%d",&n);
for(i=3;i<n;i++){
for(j=2;j<i;j++){
if(i%j==0){
count1++;
break;
}
}
p2=i+2;
for(k=2;k<i;k++){
if(p2%k==0){
count2++;
break;
}
}
if(count1==0 && count2==0){
printf("%d",i+1);
}
}
}
您只需要在循环结束时将计数器设置为 0
#include<stdio.h>
int main(){
int n, i, j, p2, k;
int count1=0, count2=0;
printf("enter the number:\n");
scanf("%d",&n);
for(i=3;i<n;i++){
for(j=2;j<i;j++){
if(i%j==0){
count1++;
break;
}
}
p2=i+2;
for(k=2;k<i;k++){
if(p2%k==0){
count2++;
break;
}
}
if(count1==0 && count2==0){
printf("%d ",i+1);
}
count1=0; count2=0;
}
}
你的代码是对的,把count1和count2最后设置成0 外循环的。
你也可以这样试试。
此代码在 Java 中。您可以将其转换为 C 。逻辑保持不变。
对于 Arraylist
,采用等于 n
的固定长度数组。
import java.util.*;
class prime
{
public static void main(String[] args){
int n, i, j, p2, k,o;
ArrayList<Integer> prime = new ArrayList<Integer>();
ArrayList<Integer> series = new ArrayList<Integer>();
int count1=0, count2=0;
Scanner s = new Scanner(System.in);
System.out.println("enter the number:\n");
n=s.nextInt();
if(n<3)
{
System.out.println("prime numbers start from 3");
}
for(i=3;i<=n;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
{
count1=1;
break;
}
}
if(count1==0)
{
prime.add(i);
}
count1=0;
}
for(k=0;k<prime.size()-1;k++)
{
int prdsr=prime.get(k);
int sucsr=prime.get(k+1);
if((sucsr-prdsr)==2)
{
series.add((prdsr+1));
}
}
for(o=0;o<series.size();o++)
{
System.out.print(" "+series.get(o));
}
}
}
我正在尝试用 C 语言打印以下系列 4 6 12 18 30 42 60 72....最多 n 个。它的逻辑很简单;我们必须打印数字,使得前面和后面的数字应该是质数!但是下面的代码在打印 4 之后没有循环。下面的代码有什么问题?
#include <stdio.h>
int main(){
int n, i, j, p2, k;
int count1=0, count2=0;
printf("enter the number:\n");
scanf("%d",&n);
for(i=3;i<n;i++){
for(j=2;j<i;j++){
if(i%j==0){
count1++;
break;
}
}
p2=i+2;
for(k=2;k<i;k++){
if(p2%k==0){
count2++;
break;
}
}
if(count1==0 && count2==0){
printf("%d",i+1);
}
}
}
您只需要在循环结束时将计数器设置为 0
#include<stdio.h>
int main(){
int n, i, j, p2, k;
int count1=0, count2=0;
printf("enter the number:\n");
scanf("%d",&n);
for(i=3;i<n;i++){
for(j=2;j<i;j++){
if(i%j==0){
count1++;
break;
}
}
p2=i+2;
for(k=2;k<i;k++){
if(p2%k==0){
count2++;
break;
}
}
if(count1==0 && count2==0){
printf("%d ",i+1);
}
count1=0; count2=0;
}
}
你的代码是对的,把count1和count2最后设置成0 外循环的。
你也可以这样试试。
此代码在 Java 中。您可以将其转换为 C 。逻辑保持不变。
对于 Arraylist
,采用等于 n
的固定长度数组。
import java.util.*;
class prime
{
public static void main(String[] args){
int n, i, j, p2, k,o;
ArrayList<Integer> prime = new ArrayList<Integer>();
ArrayList<Integer> series = new ArrayList<Integer>();
int count1=0, count2=0;
Scanner s = new Scanner(System.in);
System.out.println("enter the number:\n");
n=s.nextInt();
if(n<3)
{
System.out.println("prime numbers start from 3");
}
for(i=3;i<=n;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
{
count1=1;
break;
}
}
if(count1==0)
{
prime.add(i);
}
count1=0;
}
for(k=0;k<prime.size()-1;k++)
{
int prdsr=prime.get(k);
int sucsr=prime.get(k+1);
if((sucsr-prdsr)==2)
{
series.add((prdsr+1));
}
}
for(o=0;o<series.size();o++)
{
System.out.print(" "+series.get(o));
}
}
}