返回一个正整数的所有约数个数,主函数输入若干整数,依次输出其约数个数,一个输出占一行,如果是素数,再此行中再输出: Is Prime。
输入样例:
100 101 1001
输出样例:
9
2 Is Prime
8
#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 10
int IsPrime_number(int count)
{
int i = 2;
for (i = 2; i <= sqrt(count); i++)
{
if (count%i == 0)
return 0;
}
return 1;
}
void Output_divisor(int* nums,int i)
{
int j = 0;
for (j = 0; j <= i; j++)
{
int k = 1; int count = 0;
for (k = 1; k <= sqrt(nums[j]); k++)
{
if (sqrt(nums[j]) == k)
count++;
else
{
if (nums[j] % k == 0)
count += 2;
}
}
if(IsPrime_number(count))
printf("%d Is Prime\n", count);
else
printf("%d \n", count);
}
}
int main()
{
int nums[N] = { 0 };
int i = 0;
for (i = 0; i < N; i++)
{
scanf("%d", &nums[i]);
if (getchar() == '\n')
break;
}
Output_divisor(nums, i);
return 0;
}
就是循环输入输出呗,不想写循环就用三个变量
#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 3
int IsPrime_number(int count)
{
int i = 2;
for (i = 2; i <= sqrt(count); i++)
{
if (count%i == 0)
return 0;
}
return 1;
}
void Output_divisor(int* nums,int i)
{
int j = 0;
for (j = 0; j < i; j++)
{
int k = 1; int count = 0;
for (k = 1; k <= sqrt(nums[j]); k++)
{
if (sqrt(nums[j]) == k)
count++;
else
{
if (nums[j] % k == 0)
count += 2;
}
}
if(IsPrime_number(count))
printf("%d Is Prime\n", count);
else
printf("%d \n", count);
}
}
int main()
{
int nums[N] = { 0 };
int i = 0;
for (i = 0; i < N; i++)
{
scanf("%d", &nums[i]);
}
Output_divisor(nums, N);
return 0;
}