#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int input;
int main(void) {
printf("请输入一个数字,获取它的公约数,输入一个非正数以退出程序:___\b\b\b");
scanf("%d", &input);
while (input > 0)
{
printf("\n您输入的数字是%d", input);
printf("\n按回车键继续...");
getchar();
getchar(); //输入部分
int num = 1;
int square = 1;
while (square < input) {
num++;
square = num * num;
}
; //获取中间数
printf("\n公约数为:");
int i;
for (i = 1; i <= num; i++)
{
if (input % i == 0) {
if (input == (i * i))
{
printf("%d ", i);
}
else {
printf("%d和%d ", i, input / i);
}
}
}
printf("\n请输入一个数字,获取它的公约数,输入一个非正数以退出程序:___\b\b\b");
scanf("%d", &input);
}
printf("\n程序已退出!");
printf("\n按回车键继续...");
getchar();
getchar();
}
重点在于中间数的获取。