|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:查找介于M与N(0<M<N<32768)之间,且满足下列条件的所有整数:
1.该数中有且仅有两个相同的数字位;
2.该数是素数。
在 /**********Program**********/
/********** End **********/中填空
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
#define M 800
#define N 900
int validate(int n)
{
int i,j,k=0,num[5]= {0},size=0;
do
{
num[size]=n%10;
n=n/10;
size++;
}
/**********Program**********/
/********** End **********/
if(k==1)
return 1;
else
return 0;
}
int prime(int n)
{
int i;
for(i=2; i<(int)sqrt(n); i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int i,count=0,n1=0,n2=0;
for(i=M; i<=N; i++)
{
if(validate(i)&&prime(i))
{
count++;
printf("%6d",i);
if(count%8==0)
printf("\n");
}
}
printf("\n");
}
你需要在 /**********Program**********//********** End **********/ 的部分填写代码来实现查找符合条件的整数。以下是填空部分的完整代码:
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- #include <ctype.h>
- #include <stdlib.h>
- #define M 800
- #define N 900
- int validate(int n) {
- int i, j, k = 0, num[5] = {0}, size = 0;
-
- do {
- num[size] = n % 10;
- n = n / 10;
- size++;
- } while (n > 0);
-
- for (i = 0; i < size; i++) {
- for (j = i + 1; j < size; j++) {
- if (num[i] == num[j]) {
- k++;
- }
- }
- }
-
- if (k == 1) {
- return 1;
- } else {
- return 0;
- }
- }
- int prime(int n) {
- int i;
- for (i = 2; i <= (int)sqrt(n); i++) {
- if (n % i == 0) {
- return 0;
- }
- }
- return 1;
- }
- int main() {
- int i, count = 0, n1 = 0, n2 = 0;
- for (i = M; i <= N; i++) {
- if (validate(i) && prime(i)) {
- count++;
- printf("%6d", i);
- if (count % 8 == 0) {
- printf("\n");
- }
- }
- }
-
- printf("\n");
-
- return 0;
- }
复制代码
在 validate 函数中,我添加了两个嵌套的循环来检查数字中是否有且仅有两个相同的数字位。在 prime 函数中,我更正了循环条件的错误。
这个程序会在给定的范围内查找满足条件的整数,并按照每行8个的格式打印输出。希望能帮到你!
|
|