Q1、判断素数
问题讲述:输入若干个整数,逆序输出这若干个整数中的所有素数。所谓素数,指整数在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
Q2、再见敲K
问题描述:输入若干个整数,输出这若干个整数中和某个整数(取值范围为[5,9])相关的所有整数。和某个整数相关的含义是能被该数整除,或数字中包含该数。
解决问题1:先编写一个函数,用于判断一个数是否为素数。然后遍历这个数组依次判断该数组中的每个元素,如果这个数是素数,将该数进行输出。
解决问题2:编写一个函数,用于判断一个数是否含有 K ,接着遍历数组中的每个元素,判断当前元素是否是 K 的倍数或者是否含有 K ,利用标志变量 result ,将结果一次输出。
代码块1:
#include<stdio.h>
#include<math.h>
#define N 1001
int isPrime(int n);
int main(void)
{
int i, n, arr[N];
int result;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
for(i=n-1; i>=0; i--)
{
result=isPrime(arr[i]);
if(result==0)
printf("%d ", arr[i]);
}
return 0;
}
int isPrime(int n)
{
int i, result=0;
for(i=2; i<=(int)sqrt(n); i++)
{
if(n%i==0)
{
result=1;
break;
}
}
return result;
}
代码块2:
#include<stdio.h>
#define N 1001
int ConK(int n, int k);
int main(void)
{
int i, n, arr[N], k;
int result;
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
scanf("%d", &k);
for(i=0; i<n; i++) {
result=ConK(arr[i], k);
if(result==1 || arr[i]%k==0)
printf("%d ", arr[i]);
}
return 0;
}
int ConK(int n, int k)
{
int len, i, result=0;
if(n==0)
return result;
while(n!=0){
if(n%10==k)
{
result=1;
break;
}
n /= 10;
}
return result;
}