从键盘任意输入一个数n(1000<=n<=1000000),编程计算并输出n的所有约数中最大的三位数(即最大的三位约数)。如果n小于1000或者大于1000000,则输出“Input error!”。
函数原型:int Func(int n);
函数功能:计算n的所有约数中最大的三位数
我也是个菜鸟,看你也是菜鸟就帮忙答一下了...
返回-1的就是错的,返回其他的就是约数了。
static int Func(int n)
{
if (n >= 1000 && n <= 1000000)
{
for (int i = 999; i > 100; i--)
{
if (0 == n % i)
{
return i;
}
}
return -1;
}
else
{
return -1;
}
}
是指那个所有约数中最大的三个吗?还是说是什么?
int Func(int n) {
int array[n];
int i,j = 0;
if (n < 1000 || n > 1000000) {
printf("Input error!\n");
return -1;
}
for(i=1; i <= n/2; i++) {
if (n%i == 0) {
array[j] = i;
j++;
printf("find one: %d\n", i);
}
}
if (j >= 3) {
printf("\nlast three is: %d %d %d\n", array[j-3], array[j-2], array[j-1]);
}
return 0;
}
for(i=n/2; i >= 1; i-- {
if (n%i == 0) {
array[j] = i;
j++;
printf("find one: %d\n", i);
if(3 == j)
break;
}
}
if (j >= 3) {
printf("\nlast three is: %d %d %d\n", array[0], array[1], array[2]);
}
return 0;
import java.util.Scanner;
public class Func {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] list = new int[n];
int j = 0;
if(n < 1000 ||n>1000000){
System.out.println("Input error");
}
else{
for(int i = 2;i < n;i++){
if(n % i == 0){
list[j] = i;
j++;
}
}
}
System.out.println(n/list[0]);
System.out.println(n/list[1]);
System.out.println(n/list[2]);
}
}
如果运行,有帮助的话给个赞呗!
代码如下:
#include
int Func(int n);
int main( )
{
int n,result;
printf("Input n:");
scanf("%d",&n);
if(n1000000)
{
printf("Input error!\n");
}
else
{
result=Func(n);
printf("%d\n",result);
}
}
int Func(int n)
{
int m,i;
for(m=999;m>=100;m--)
{
if(n%m==0)
return m;
}
}