尝试创建一个读取数组并打印质数的程序
Trying to create a program that reads an array and prints the prime numbers
这是我到目前为止写的,我从哪里做错了?
#include <iostream>
using namespace std;
int main()
{
int x[5], count=0;
for (int i=0;i<5;i++)
cin>>x[i];
for (int i=0;i<5;i++)
{
for (int n=2;n<x[i];n++)
{
if (x[i]%n==0)
count++;
}
if (count==1)
cout<<x[i]<<" ";
}
}
编辑:非常感谢所有试图提供帮助的人。问题是我必须在循环中进行计数,以便每次从0开始。这是我的新工作代码:
#include <iostream>
using namespace std;
int main()
{
int x[5];
for (int i=0;i<5;i++)
cin>>x[i];
for (int i=0;i<5;i++)
{ int count=0;
for (int n=2;n<=x[i];n++)
{
if (x[i]%n==0)
count++;
}
if (count==1)
cout<<x[i];
}
}
#include <iostream>
using namespace std;
int main()
{
int x[5], count=0;
for (int i=0;i<5;i++)
cin>>x[i];
for (int i=0;i<5;i++)
{
bool check = true;
for (int n=2;n<x[i];n++)
{
if (x[i]%n==0)
{
check = false;
break;
}
}
if (check)
cout<<x[i]<<" ";
}
}
为了更好的复杂性,请将嵌套的循环更改为:
for (int n=2;n<=sqrt(x[i]);n++)
其他方式:
int main ()
{
for (int i=2; i<100; i++)
{
bool check=true;
for (int n=2; n*n<=x[i]; n++)
{
if (x[i] % n == 0)
{
check=false;
break;
}
}
if(check) cout << x[i] << " ";
}
return 0;
}
这是我的解决方案。我基本上假设所有数字都是素数,但是如果我发现它们不是素数,我不会打印出来。
int main() {
bool primeNumber;
int length = 0;
int x[5], count=0;
for (int i=0;i<5;i++){
length++;
cin>>x[i];
}
for (int i = 0; i < length; i++ )
{
primeNumber = true;
for (int j = 3; j <= x[i]/2; j += 2 )//Not necessary to check agains numbers higher than half the number you want to check
{
if (x[i] % j == 0)
{
primeNumber = false;
}
}
if(primeNumber){cout << "Primenumber: " << x[i] << endl;}
}
}
编辑:这是对您的代码的评论假设您的阵列看起来像
{5,9,13,15, 17}
int main()
{
int x[5], count=0;
for (int i=0;i<5;i++)
cin>>x[i];
for (int i=0;i<5;i++)
{
for (int n=2;n<x[i];n++)
{
在这里,您从2-4(2,3,4)循环。仅需要循环您要检查的数字的一半。例如(x [i]/2),但是您可以像在这里一样做。
if (x[i]%n==0){
count++;}
当您的数字为5时,您再次检查n数字,这将产生5%2 = 1,5%3 = 2,5%4 = 1。但是5是质数,您的代码没有设法检测到这一点。
}
if (count==1)
假设您确实发现5是上面的素数,并且设法将计数增加到1。7.这将使计数等于2。但是您只对1进行检查,因此您的下一个质子数不会打印,因为计数仅等于第一个质量数之后,而不是其余的。
cout<<x[i]<<" ";
}
}
希望您能理解我的解释。它总是有助于手工或调试模式浏览您的代码,并考虑代码将对不同的数字进行操作。
所有数字本身都是可分配的。如果您尝试与自己分配数字
相关文章:
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 在一定长度后从数组中打印时缺少整数
- 数组元素打印的递归方法
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 打印矢量数组中的所有元素
- 打印问题.我在数组中打印值时遇到一些问题
- 数组类 阵列的打印输出
- 动态分配的聊天数组打印缺失的数据和空
- 如何打印 2D 字符数组C++
- 如何修改代码以打印出数组 v2
- 在C++中初始化和打印 2D 数组
- 将浮点数转换为无符号字符数组并打印出来
- C++ 打印包含数据结构的数组
- 如何让字符数组在一行而不是多行中打印出来?
- 打印字符数组地址的正确方法
- 按字母顺序打印存储在字符数组中的信息
- 使用递归反转和打印出数组的内容
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 加载有空指针的字符数组的打印值