生活随笔
收集整理的這篇文章主要介紹了
质因子分解习题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 問題 A: 完數
- 問題 C: 質因數的個數
- 問題 D: 約數的個數
- 問題 E: 完數與盈數
問題 A: 完數
http://codeup.cn/problem.php?cid=100000592&pid=0
#include<cstdio>
#include<cmath>
int main(void)
{int n
;int i
,j
;while( scanf("%d",&n
) != EOF ){if(n
<6)continue;else{printf("6 ");for(i
=7;i
<=n
;i
++){int sum
=1;int sql
=(int)sqrt(i
*1.0);for(j
=2;j
<=sql
;j
++){if(i
%j
==0){sum
=sum
+j
+i
/j
;}}if(sql
*sql
==i
){sum
=sum
-sql
;}if(sum
==i
)printf("%d ",i
);}printf("\n");}}return 0;
}
問題 C: 質因數的個數
http://codeup.cn/problem.php?cid=100000592&pid=2
題目中給的最大數并不是特別大。所以打印出前100多中的質數表就足以。
#include<cstdio>
#include<cmath>
int a
[50]={2};
int main(void)
{int i
,j
,n
;int k
=1;for(i
=3;i
<=120;i
++){for(j
=2;j
<=(int)sqrt(1.0*i
);j
++){if(i
%j
==0)break;}if(j
>(int)sqrt(1.0*i
)){a
[k
++]=i
;}}while( scanf("%d",&n
) != EOF ){int count
=0;for(i
=0;i
<k
;i
++){while(n
%a
[i
]==0){n
=n
/a
[i
];count
++;}}if(n
!=1){count
++;}printf("%d\n",count
);}return 0;
}
問題 D: 約數的個數
http://codeup.cn/problem.php?cid=100000592&pid=3
#include<cstdio>
#include<cmath>
int main(void)
{int n
;int number
;int i
,j
,count
;while(1){scanf("%d",&n
);if(n
==0)break; for(i
=0;i
<n
;i
++){scanf("%d",&number
);count
=0;int sql
=(int)sqrt(1.0*number
);for(j
=1;j
<=sql
;j
++){if(number
%j
==0){count
++;count
++;}}if(sql
*sql
==number
)count
--;printf("%d\n",count
);}}return 0;
}
精簡版:
#include <cstdio>
#include <cmath>
int main() {int n
;while (scanf("%d", &n
), n
) {for (int i
= 0; i
< n
; i
++) {int t
, cnt
= 0;scanf("%d", &t
);int sqr
= (int)sqrt(1.0 * t
);for (int i
= 1; i
<= sqr
; i
++) {if (t
% i
== 0) cnt
+= 2; if (i
* i
== t
) cnt
--; }printf("%d\n", cnt
);}} return 0;
}
問題 E: 完數與盈數
http://codeup.cn/problem.php?cid=100000592&pid=4
#include<cstdio>
#include<cmath>
int main(void)
{int n
;int i
,j
;int sum
;int a
[50]={0};int b
[50]={0};a
[0]=6;int a_index
=1;int b_index
=0;for(i
=7;i
<=60;i
++){sum
=1;int sql
=(int)sqrt(i
*1.0);for(j
=2;j
<=sql
;j
++){if(i
%j
==0){sum
=sum
+j
+i
/j
;}}if( sqrt(i
)*sqrt(i
) == i
){sum
=sum
-sql
;}if(sum
==i
)a
[a_index
++]=i
;if(sum
>i
){b
[b_index
++]=i
;}}printf("E: ");for(i
=0;i
<a_index
-1;i
++){printf("%d ",a
[i
]);}printf("%d\n",a
[a_index
-1]);printf("G: ");for(i
=0;i
<b_index
-1;i
++){printf("%d ",b
[i
]);}printf("%d\n",b
[b_index
-1]);return 0;
}
總結
以上是生活随笔為你收集整理的质因子分解习题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。