我试图写一个质数indentify-er,但是每次我尝试除以输入的数字时,它都不会取小数。我试过使用双变量和浮点变量。我是一个初学者,所以我可能不得不问一些关于您答案的问题。这是代码(looper是我用于while函数以使其继续运行的数字)。
#include <iostream>
int main() {
int input = 0;
float result = 0;
int looper = 2;
std::cout << "Please enter your number.\n";
std::cin >> input;
if (input == 1 or input == 0) {
std::cout << "Your number is neither.\n";
}
while (looper < 1000002) {
result = input / looper;
std::cout << input / looper;
if (fmod(result, 1) == 0) {
std::cout << "Your number is composite.\n";
std::cout << result;
looper = 1000003;
}
else if (fmod(result, 1) != 0) {
std::cout << "Your number is prime.\n";
}
looper = looper + 1;
}
}
最佳答案
对于算术计算,有一些规则。
float
或double
),则结果分别被截断为float
或double
类型(int long
类型,那么结果将被截断为long
类型(int 但是,您可以在此处做更好的选择(使用moduler运算符
%
),如下所示:if (input % looper == 0) {
// case for composit
// in other words input value is completely divisible by current value of looper
}
else {
// input value is not completely divisible by current value of looper
// this means there is a remainder exists
}
尽管您将素数数的
printf
语句放置在错误的位置,但是可以改进提供的算法以确定整数是否为素数。
关于c++ - 无法让我的代码以十进制精度除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60443785/