class Machine {
void buy1(){}
void buy2(){}
void buy2(){}
public static void main(String args[]) {
Machine obj = new Machine();
obj.buy1();
.....
}
}
这是我为测试素数而创建的代码。在整理出几个调试问题之后,我就可以运行它了。
它打开了命令窗口,读取“输入一个数字”并在我输入数字的第二个时自行关闭。
帮助?
答案 0 :(得分:1)
你必须:
while
循环if (i == 1)
条件(i==1
表示x
可被某些y
整除} y = 2
开头(每个数字可被1整除)sqrtf(x)
(y <= sqrtf(x)
或15,25,35 ...是素数)。所以:
int main()
{
int x;
cout << "Enter a number." << endl;
cin >> x;
int y = 2; // <-- changed
int i = 0;
while (i == 0 && y <= sqrtf(x)) // <-- changed
{
if (fmodf(x,y) == 0)
{
i = 1;
}
else
{
i = 0;
}
y++;
} // <-- moved here
if (i == 0) // <-- changed
{
cout << "Your number is prime." << endl;
}
else
{
cout << "Your number is composite." << endl;
}
return 0;
}
有效(或多或少......)。
反正:
using namespace std;
(Why is "using namespace std" considered bad practice?)\n
应该是您的默认设置("\n" or '\n' or std::endl to std::cout?)y
和x
是整数,因此您可以使用%
代替fmodf
else { i = 0; }
是多余的y < sqrtf(x)
更改y * y <= x
(并且您不再需要math.h
)或找到数字的平方根然后启动循环有点好(但远非完美):
#include <cmath>
#include <iostream>
int main()
{
int x;
std::cout << "Enter a number.\n";
std::cin >> x;
int square_root = std::sqrt(x);
int y = 2;
int i = 0;
while (i == 0 && y <= square_root)
{
if (x % y == 0)
i = 1;
++y;
}
if (i == 0)
std::cout << "Your number is prime.\n";
else
std::cout << "Your number is composite.\n";
return 0;
}
现在:
bool
会比int i
;