1. 程式人生 > >數學題 求因子個數

數學題 求因子個數

給定 other statistic mark scanf logs down targe rip

小C的倍數問題

Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 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

#include<cstdio>
#include <cmath>
using namespace std;
int num(int n){ //返回的是因子總數
    int count=2;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0){
            
if(i==sqrt(n) && n/i==i){ //如果兩因子相同,則只加1 count++; } else count+=2; } } return count; } int main(){ int n,T; for(scanf("%d",&T);T--;){ scanf("%d",&n); if(n==2) puts("1"); else printf("%d\n",num(n-1)); } }

數學題 求因子個數