[英]how to create an array that stores prime numbers?
Given an array of 8 integers by the user, the program should print out every prime number entered.给定用户一个 8 个整数的数组,程序应该打印出每个输入的素数。 The program after entering some number stops, I don't know why.输入一些数字后程序停止,我不知道为什么。 Could you tell what I did wrong please?你能告诉我我做错了什么吗? code:代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main()
{
const int N=8;
int i, j, count, x;
int arr[N];
int prime[N];
j = 2;
for(i = 0; i < N; i++)
{
printf("Enter a number %d:", i + 1);
scanf("%d", &arr[i]);
if (arr[i] == 1)
{
prime[i] = arr[i];
count++;
}
else
{
do
{
x=arr[i] % j;
if (x != 0)
j++;
else
break;
}
while(true);
if(arr[i] == j)
{
prime[i] = arr[i];
count++;
}
}
}
for (i = 0; i < count; i++)
printf("%dth prime number:%d\n", i + 1, prime[i]);
getch();
return 0;
}
If the user enters an integer which is less than the previous one, your program ends up in an infinite loop.如果用户输入的 integer 小于前一个,您的程序将进入无限循环。 You probably meant to initialize j in the else clause, just before the do-while loop.您可能打算在 else 子句中初始化j ,就在 do-while 循环之前。
Also note that you should check the return value from scanf to make sure that an integer was actually entered.另请注意,您应该检查scanf的返回值,以确保实际输入了 integer。
I use a booleen function to check the element in the array is prime or no,then I fill the array of Prime numbers like this:我使用布尔 function 来检查数组中的元素是否为素数,然后我填充素数数组,如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool Prime(int);
int main()
{
int N;
do
{
printf("Give me the number of numbers :");
scanf("%d",&N);
}while(N<1);//in your array must be minimum 1 element
int prime[N];
int arr[N];
int j=0;
for(int i=0;i<N;i++)
{
do
{
printf("Enter a number %d:",i+1);
scanf("%d", &arr[i]);
}while(arr[i]<0); //you can write while(arr[i]>1) and you just write if(Prime(arr[i])==true)
if(arr[i]!=1&&arr[i]!=0&&Prime(arr[i])==true)
{
prime[j]=arr[i];
j++;
}
}
printf("\n\n");
for(int p=0;p<j;p++)
{
printf("%d th prime number:%d\n",p+1,prime[p]);
}
return 0;
}
bool Prime(int n)
{
for(int i=2;i<=(n/2);i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.