素数程序-我做错了什么
Prime number Program - what am I doing wrong?
I,我是c++和编程的初学者。如果你能帮我做这件事,我将不胜感激。
我一直试图写一个程序,告诉你一个给定的数字是不是素数(如果是,它应该打印"素数")
这是我想出的代码:
int main() {
cout<<"enter a number";
int x;
cin>>x;
int y = 2;
int remainder = 1;
while(y<x,remainder!=0) {
remainder = (x%y);
y++;
}
if (remainder!=0) {
cout<<"prime";
}
}
问题是程序不会为任何数字打印"素数"。我想有更有效的方法来编写这样一个程序,但你能告诉我我的方法有什么问题吗?
谢谢。我希望它不是太简单,尽管我担心它是…
用逗号连接条件不会达到预期效果
逗号运算符有有效的应用程序,但在这种情况下,
a"answers"更合适:
while(y<x && remainder!=0)
您应该更改
while(y < x, remainder != 0)
至
while(y < x && remainder != 0)
逻辑运算符"and"被写成&;在C++(和许多其他编程语言)中。
你应该这样做:
if(x==2 || x==3)
cout<<"prime";
else
for(int i = 2; i < x/2; ++i)
if(x % i == 0)
{
cout<<"Not prime";
break;
}
否则就是黄金时段。附言:你不需要检查从1到x的数字。从1到x/2就足够了。
您可以通过使用"Eratosthenes筛"来减少测试它是否是素数所需的时间。X除以小于X平方根的数字。
#include <cmath>
#include <iostream>
int main() {
unsigned int x;
std::cout<<"Enter a number:";
std::cin >> x;
bool prime = true;
for(unsigned int y = 2; y <= static_cast<unsigned int>(sqrt(x)); y++) {
if (x % y == 0) {
prime = false;
}
}
if (prime) {
std::cout<<"prime";
}
}
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- 我在这个课上做错了什么?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 我做错了什么?GetDiskFreeSpaceExA的功能根本不起作用
- 我在查找和字符串上做错了什么?
- 我正在尝试用 c++ 制作一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- 我在尝试将多个值push_back向量时出错。我做错了什么?
- 插入排序:我做错了什么?