如何使用switch语句(C++)测试一个数字是素数还是可被7整除
How to test if a number is prime or divisible by 7 using switch statements (C++)
我遇到了一个问题。我试着测试输入的数字是素数还是可被7整除。
基本上,我的程序要求用户输入一个数字,然后要求用户输入以下字母之一:"a"、"b"或"c"。字母对应以下选项:
a) 输入的数字是偶数或奇数(计算出来)b) 数字是素数或复合数c) 检查数字是否可以被7整除(计算出来)
例如,如果is用户输入的数字是5,然后选择字母"b",我应该得到输出"数字是素数"。另一方面,如果他选择字母"a",我应该得到输出"数字是奇数"。
如果有任何帮助,我将不胜感激。提前感谢!!
这就是我迄今为止设法创建的:
#include <iostream>
using namespace std;
int main ()
{
int number;
char letter = 0;
cout << "Input number: ";
cin >> number;
cout << "Enter (a) to check for even or odd.n"
<< "Enter (b) to check for prime or not.n"
<< "Enter (c) to check for divisible by 7 or not.n";
cin >> letter;
switch (letter)
{
case 'a':
switch (number % 2)
{
case 0:
cout << "The number is Even.n";
break;
case 1:
cout << "The number is Odd.n";
break;
}
break;
case 'b':
switch ()// Don't know what to put for condition
{
case 0:
cout << "The number is Prime.n";
break;
case 1:
cout << "The number is composite.n";
break;
}
break;
case 'c':
switch (number % 7)
{
case 0:
cout << "The number is Divisible by 7.n";
break;
case 1:
cout << "The number is not Divisible by 7.n";
break;
}
break;
}
return 0;
}
您已经有了c
的解决方案,它与a
的解决方案相同。
如果是(number % 2) == 0
,则一个数可以被二整除。类似地,如果(number % 7) == 0
,则一个数可以被7整除。
因此,使用第一种情况,并意识到switch
有一个默认子句:
switch (number % 7) {
case 0:
cout << "The number is a multiple of seven.n";
break;
default:
cout << "The number is NOT a multiple of seven.n";
break;
}
你会注意到我在那里使用了switch
,因为你的问题需要它,但除了你的问题之外,它并不是真正需要的。使用if-else
可以很容易地完成二选一或switch
语句。
b
(素数)的解稍微复杂一些。如果数字不是任何数字的倍数(从2到,但不包括数字本身),则该数字是素数(有一些效率,例如只向上到数字的平方根,只检查素数而不是所有数字,但如果您愿意,可以稍后添加)。
因此,你会有一个循环x = 2..(n-1)
,在这个循环中,你会检查余数是否为零,如果是这样的话,就说它不是素数((n % x) == 0
)。
如果你检查了这个范围内的所有数字,却没有找到一个余数为零的数字,那么你就有了素数。
这种野兽的伪代码是(使用switch
,但这里绝对没有必要):
is_prime = true
for x = 2..n-1: // C++: for (int x = 2; x < n; x++)
if (n % x) == 0:
is_prime = false
break for
switch (is_prime):
case true:
print "Number is prime"
break switch
default:
print "Number is NOT prime"
break switch
只达到数字的平方根是对for
循环的一个非常小的修改:
is_prime = true
for x = 2..∞ until x * x > n: // C++: for (int x = 2; x * x <= n; x++)
if (n % x) == 0:
is_prime = false
break for
您的代码还有另一个问题。虽然您使用break
来防止内部交换机故障,但外部交换机没有故障。
应在case 'b':
和case 'c':
行之前插入break;
行,以防止发生故障。否则,选择选项a
将完成所有三个测试,而选项b
将同时执行b
和c
。
正如其他人已经说过的,您可以通过使用模(%
)运算符来确定一个数字是否可以被其他数字整除。然而,没有内置的函数或运算符来确定一个数字是否为素数。互联网上有很多例子可以确定这一点,但其中一个微不足道的例子是:
bool is_prime(int number){
if( number <= 2 ){
return number == 2;
}
for( int divisor = 3; divisor < number / 2; divisor += 2 ){
if( number % divisor == 0 ){
return false;
}
}
return true;
}
然后你可以在一个条件下使用这个函数来确定一个数字是否是素数。如果你想测试各种各样的数字,筛子会更节省时间,但这适用于大多数用途。
以下是代码:
#include <iostream>
using namespace std;
int main ()
{
int number;
char letter = 0;
cout << "Input number: ";
cin >> number;
cout << "Enter (a) to check for even or odd.n"
<< "Enter (b) to check for prime or not.n"
<< "Enter (c) to check for divisible by 7 or not.n";
cin >> letter;
switch (letter)
{
case 'a':
if (number % 2 == 0)
{
cout << "The number is Even.n";
}
else
{
cout << "The number is Odd.n";
}
break;
case 'b':
if(number > 0 ) //Only positive numbers
{
int count = 0; //dummy variable
for(int i = 2; i < number; i++) // loop till one less than number entered
{
if(number % i == 0) //Number is divisible by other number
{
count++; // increment the count
break;
}
}
if(count == 0) // since prime numbers cannot be divided by any other number except 1 and the number itself
{
cout << "Prime number.n";
}
else
{
cout << "Not a Prime number.n";
}
}
else
{
cout << "Please enter a positive integer.n";
}
break;
case 'c':
if (number % 7 == 0)
{
cout << "The number is Divisible by 7.n";
}
else
{
cout << "The number is not Divisible by 7.n";
}
break;
}
return 0;
}
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 用于检查数字是否有数字或可被该数字的值整除的程序
- 返回 int 中可被 2 c++ 整除的所有数字的总和
- 如何在 c++ 中检查连续片段中数字被 11 整除
- 根据另一个数字的可整除性返回子数组中的索引
- 将可被数字整除的数字插入到向量中
- 显示用户输入的平均数大于 50 和所有可被 3 整除的数字的乘积
- 第一个和第二个数字之间能被 4 和 6 整除的所有整数的总和
- 不可整除的数字
- 可被数组中的任何数字整除的数字
- 如何使用switch语句(C++)测试一个数字是素数还是可被7整除
- 创建一个程序来告诉用户一个数字是否可以被 5 整除
- 是否有按位技巧来检查数字被 2 或 3 整除
- 数字不能被4整除的PTR算法
- 如何在c++中检查一个数字是否可以被2*M_PI整除
- 计算可被 K 整除的范围内的数字,并在范围内计算数字之和