中间变量的数据类型

时间:2012-06-04 08:24:40

标签: c++

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

我被击中的地方是,我需要在程序之间检查我输入的某些算术运算得到的值是否为整数

即假设输入是'a'

我想知道如何检查'b'是否为整数(FYI,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;
}

3 个答案:

答案 0 :(得分:4)

您应该使用if (((a+1)%6) == 0)(请参阅modulus operator)。

答案 1 :(得分:0)

由于a1都有int类型,a+1(a+1)也是如此。由于6也有int类型,(a+1)/6也会有类型int,无论a的值是什么。

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

答案 2 :(得分: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";