小C的倍数问题--求一个数的因子(java)

本文探讨了如何解决一个数学问题:给定一个进制P,找出所有符合条件的正整数B,使得在P进制下,一个数为B的倍数的充分必要条件是其各位数字之和也是B的倍数。提供了输入输出样例及一个Java实现方案。
Problem Description
根据小学数学的知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数。反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3的倍数。

现在给定进制P,求有多少个B满足P进制下,一个正整数是B的倍数的充分必要条件是每一位加起来的和是B的倍数。

Input
第一行一个正整数T表示数据组数(1<=T<=20)。

接下来T行,每行一个正整数P(2 < P < 1e9),表示一组询问。

Output
对于每组数据输出一行,每一行一个数表示答案。

Sample Input
1
10
Sample Output

3



import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		int T = input.nextInt();
		int[] numbers = new int[T];
		for (int i = 0; i < numbers.length; i++) {
			numbers[i] = input.nextInt();
		}
		
		for (int i = 0; i < numbers.length; i++) {
			int ans = 0;
			int p = numbers[i]-1;
			int num = (int) Math.sqrt(p);
			if (num*num==p) {
				ans = 1;
			}else {
				ans = 2;
			}
			for (int j = 2; j < num; j++) {
				if (p%j==0) {
					ans+=2;
				}
			}
			System.out.println(ans);
		}
	}
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obession

觉得有用可以打赏咖啡一杯~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值