大家好我的任务是用输入数字N的第一个素数填充数组。数组的大小给出。这是我的解决方案。谢谢你们! 这是输出输入一个数字:77 -858993460 -858993460 2 3 -858993460 5 -858993460 7 -858993460 -858993460 -858993460 11 -858993460 13按任意键继续
#include "stdafx.h"
#include<iostream>
using namespace std;
bool primenumber(int number) {
int p = 0;
for (int i = 1; i <= number; i++) {
if (number%i == 0) {
p++;
}
}
if (p == 2) {
return true;
}
else {
return false;
}
}
void fillArray(int array[], const int N){
for (int i = 0; i < N; i++){
if (primenumber(i))
array[i] = i;
}
}
void printArray(int array[], const int N){
for (int i = 0; i < N; i++){
cout << array[i] << " ";
}
}
int _tmain(int argc, _TCHAR* argv[])
{
const int N = 14;
int array[N];
int number = 0;
cout << "Enter a number: ";
cin >> number;
fillArray(array, number);
printArray(array, N);
system("pause");
return 0;
}
答案 0 :(得分:1)
如果array[i]
是素数,则将i
设置为i
。但是,如果array[i]
不是素数,则不要将i
设置为任何值。您可能只想将素数存储在array
中,所以
void fillArray(int array[], const int N){
for (int i = 2, j = 0; j < N; ++i){
if (primenumber(i))
array[j++] = i;
}
}
答案 1 :(得分:0)
第一件事......你需要初始化阵列 将此用作素数函数
bool primenumber(int number) {
for(int i(2); i <= sqrt(number); ++i) {
if(number % i == 0)
return false;
}
return true;
}
其次,因为您已将数组的大小固定为14,所以当您查找大于13的数字时,您的数组将为0 0 2 3 0 5 0 7 0 0 0 11 0 13
。我猜这是一个家庭作业问题,您应该考虑使用new
动态分配内存来增加数组。不要忘记每个delete []
{/ 1}} {/ 1}}。