本题的目标很简单,就是判断一个给定的正整数是否素数。
输入格式:
输入在第一行给出一个正整数N
(≤ 10),随后N
行,每行给出一个小于231的需要判断的正整数。
输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出Yes
,否则输出No
。
输入样例:
2
11
111
输出样例:
Yes
No
进行多个数值的输入,然后在判断数值是否为素数,最后来进行输出
那么对于多个数值,两种方法“for , 数组”
利用for
#include <>
#include <>
int prime(int num);
int main(void)
{
int num,limit;
printf("请输入多个整数:");
scanf_s("%d", &limit);
for(int i=1;i<= limit;i++){
scanf_s("%d",&num); //我这个样子不是来进行逐步调用判断的吗
if (prime(num)) { //if(1)是可以执行的
printf("Yes");
putchar(' ');
}
else {
printf("No");
putchar(' ');
}
}
return 0;
}
int prime(int num)
{
int flag = 1, i;
for (i = 2; i < sqrt(num); i++) {//这个减少循环的次数
if (num % i == 0) {
flag = 0;
break;
}
return (flag);
}
}
这里边有math函数,可以来减少运算的。
其实我想推荐的是第二种方法,利用数组。
#include <>
#define NUMBER 10
int a[10];
void prime_judge(int arr[], int num);
int main(void)
{
int arr[NUMBER]; //限制最多储存的数字是10
int i, num;
printf("您打算输入多少个数字:");
scanf("%d", &num);
for (i = 0; i < num; i++) {//输入的数字小于num
scanf("%d", &arr[i]); //输入了“num”个数字
}
//判断
prime_judge(arr, num);//函数调用数组的同时,只是数组名
for (i = 0; i < num; i++)
if (a[i] != 1) printf("Yes ");
else printf("No ");
return 0;
}
void prime_judge(int arr1[], int num) {
int j = 0; //我的数值传送不过来啊
int i;
for (i = 0; i < num; i++)
for (j = 2; j < arr1[i]; j++)
if (arr1[i] % j == 0)
a[i] = 1; //将所有不是素数的来赋值为 1
}
第二种方法就是会在函数中来进行判断,但是有一个全局的数组,这货的作用则是说,我有十个空间,然后在这是个空间里开始的数值都是0,但是你是可以改变的,当你是素数的时候,你讲这个数组的值为1,不是还是为0,然后在在main函数里进行判断,这个时候你仅仅去判断它是否是1 或者说是 0就行了,是1就输出不是素数(no)然后是0 就是是素数,这个就能得到有效的判断。