0

我正在编写一个程序(在 cpp 中)来检查给定数字的素数

我被打动的一点是,我需要在程序之间检查我对输入的一些算术运算获得的值是否是整数

即假设输入是'a'

我想知道如何检查“b”是否为整数(仅供参考,b=(a+1)/6)

我对此的尝试:

int main()
{
    using std::cin;
    using std::cout;
    int b,c;
    int a;
    cout<<"enter the number";
    cin>>a;
    b=(a+1)/6;
    c=(a-1)/6;
    if (b is an integer)
        cout << "The given number is  prime";
    else if (c is an integer)
        cin << "The given number is  prime!";
    else
        cout<<"The number is not prime";                  
    return 0;
}
4

3 回答 3

4

您应该使用if (((a+1)%6) == 0)(请参阅模数运算符)。

于 2012-06-04T08:28:16.813 回答
0

因为aand1都有类型int,所以a+1and也有(a+1)。也6有 type int,无论 的值是多少,(a+1)/6都会有 type 。inta

我想你真正想知道的是是否6均分(a+1)。为此,您可以使用模数运算符。当且仅当6均分。(a+1)(a+1)%6 == 0

于 2012-06-04T08:30:29.560 回答
0

使用其他答案中建议的模数运算符%可能是最好的解决方案,但要更字面地回答您的问题,您可以判断整数除法的结果是否完全像这样:

b=(a+1)/6;
c=(a-1)/6;
if (b * 6 == a + 1) // if b is an integer
    cout << "The given number is  prime";
else if (c * 6 == a - 1) // if c is an integer
    cin << "The given number is  prime!";
else
    cout<<"The number is not prime";
于 2012-06-04T08:30:59.663 回答