|
发表于 2019-10-29 22:01:05
|
显示全部楼层
本帖最后由 bin554385863 于 2019-10-30 13:39 编辑
- #include <iostream>
- //获取偶数因子
- void func(int num, int * arr, int * n)
- {
- int count = 0;
- if (num <= 0)//排除负数
- {
- std::cout << "DATE ERROR";
- *n = -1;
- arr[0] = -1;
- }
- else
- {
- //查找偶数因子
- for (size_t i = num; i >= 1; i--)
- {
- if (num % (i * 2) == 0)
- {
- count++;
- }
- }
- *n = count;
- count = 0;
- for (size_t i = num; i >= 1; i--)
- {
- if (num % (i * 2) == 0)
- {
- int tmp = num / i;
- arr[count] = tmp;
- count++;
- }
- else if (num % (i * 2) != 0)
- {
- arr[count] = 0;
- }
- }
- }
- }
- //计算偶数因子的个数
- int arrsize(int num)
- {
- int size = 0;
- if (num % 2 != 0)
- {
- size = 1;
- }
- else
- {
- for (size_t i = 1; i <= num; i++)
- {
- if (num % (2 * i) == 0)
- {
- size++;
- }
- }
- }
- return size;
- }
- int main(int argc, char const * argv[])
- {
- int a = 1;
- std::cin >> a;
- for (int b = 0; a != 0; std::cin >> a)
- {
- int s = arrsize(a);
- int ptr[s];
- func(a, ptr, &b);
- //std::cout<<b<<std::endl;
- std::cout << a << "有" << b << "偶数因子,分别是: ";
- for (size_t i = 0; i < s; i++)
- {
- std::cout << ptr[i] << " ";
- }
- std::cout << '\n' << std::endl;
- }
- return 0;
- }
复制代码
|
|