我正在为素数编写此代码;在从用户那里获取输入后,程序不再进行任何进一步的计算。
输入/输出的示例为:
Enter the Number You Want to Check::67
输入后,程序不会显示数字是否为质数。
这是代码:
int main() {
int i, n;
cout << "Enter the Number You Want to Check::";
cin >> n;
if (n == 1) {
cout << "Smallest Prime number is 2;" << endl;
}
for (i == 2; i < n; i++) {
if (n % i == 0) {
cout << "No is not prime";
break;
}
}
if (n == i) {
cout << "Number is prime";
}
return 0;
}
答案 0 :(得分:5)
int i, n;
...
for(i==2;i<n;i++)
那是假的。您从未初始化过i
。
我怀疑你想写
int i, n;
...
for(i=2;i<n;i++)
即;使for
的第一项循环到i
的赋值,而不是与2
进行比较。
答案 1 :(得分:2)
for (i== 2; i < n; i++)
这通过检查i
是否为2来开始循环。尝试将i
设置为2:
for (i = 2; i < n; i++)
此外,在循环之前,您检查n
是否为1
,但不检查其是否小于1
。 0
可以被所有素数整除,但是-1
不能被所有素数整除。
答案 2 :(得分:1)
在此声明
grepl
您正在使用比较运算符!
而不是赋值运算符for(i==2;i<n;i++)
。改写
==
实际上,无需在循环中使用以下条件=
,因为当for(i=2;i<n;i++)
大于i<n
i
时,永远不能等于{{1 }}。
这里是一个演示程序,显示了如何减少循环的迭代次数。
n / i
其输出可能看起来像
n % i
您可以编写一个单独的函数来确定给定数字是否为素数。
一种更有效的方法是从素数集中排除偶数(除2外)。
这是一个演示程序。
0
其输出可能与上面显示的相同。
答案 3 :(得分:1)
循环内的变量初始化是错误的。应该是下面的样子
for(i=2;i<n;i++)
代替
for(i==2;i<n;i++)
可能是拼写错误