回复 10楼 daniel_
每个数都有的。。网上有证明过的。不过有的最小倍数数值小。有的大。。
回复 11楼 萝莉小纯情
你确定?我找到的最小的 99没有
--
我再调一下程序看下
程序代码:/************************************************************************/
/* 对于任意给定的整数n,存在最小的由0和1构成的10进制整数是它的倍数。求N */
/************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char chars[100];
void change(int n, int *a)
{ //将整数 n转换为二进制字符串
if (0 == n)
{
*a = 0;
return;
}
change(n / 2, a);
chars[(*a)++] = n % 2 + '0';
chars[*a] = '\0';
}
int judge(char *a, int n)
{ //将 2字符串转为整数,并判断是否n的倍数,否返回整数
int num = atoi(a);
if (num % n) return 0;
else return num;
}
int main()
{
int i;
int n;
int N;
scanf("%d", &n);
for (int j = 1;;j++)
{
change(j, &i);
if (N = judge(chars, n))
{
printf("%ld\n", N);
break;
}
}
return 0;
}
程序代码:/************************************************************************/
/* 对于任意给定的整数n,存在最小的由0和1构成的10进制整数是它的倍数。求N */
/************************************************************************/
#include <stdio.h>
char chars[100];
void change(int n, int *a)
{ //将整数 n转换为二进制字符串
if (0 == n)
{
*a = 0;
return;
}
change(n / 2, a);
chars[(*a)++] = n % 2 + '0';
chars[*a] = '\0';
}
char *judge(char *a, int n)
{
int num = 1;
for (char *p = a + 1;*p != '\0';p++)
{
num *= 10 % n;
num %= n;
num += (*p - '0') % n;
}
if (num % n) return 0;
else return a;
}
int main()
{
int i;
int n;
scanf("%d", &n);
for (int j = 1;;j++)
{
change(j, &i);
if (judge(chars, n))
{
printf("%s\n", chars);
break;
}
}
return 0;
}
