作业帮 > 综合 > 作业

C语言一道算法题设计一个程序,对应于正整数输出其所有素因子(多重因子重复输出);对于负数,首先输出-1,然后输出所有因子

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 11:12:31
C语言一道算法题
设计一个程序,对应于正整数输出其所有素因子(多重因子重复输出);对于负数,首先输出-1,然后输出所有因子
Input
第一行输入一个t(t
#include<stdio.h>
#include<malloc.h>
int main(){
\x05int t,n,i;
\x05scanf("%d",&t);
\x05while(t--){
\x05\x05scanf("%d",&n);
\x05\x05if(n<0){
\x05\x05\x05printf("-1 ");
\x05\x05\x05n=-n;
\x05\x05}
\x05\x05for(i=2;i<=n;i++){
\x05\x05\x05while(n!=i){
\x05\x05\x05\x05if(n%i==0){
\x05\x05\x05\x05\x05printf("%d ",i);
\x05\x05\x05\x05\x05n=n/i;
\x05\x05\x05\x05}
\x05\x05\x05\x05else
\x05\x05\x05\x05\x05break;
\x05\x05\x05}
\x05\x05}
\x05\x05printf("%d\n",n);
\x05}
\x05return 0;
}
参考这段代码哈,欢迎交流.
再问: 提交到系统显示Presentation Error...话说我看代码输出没错啊= =
再答: #include<stdio.h>
#include<malloc.h>
int main(){
    int t,n,i;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        if(n<0){
            printf("-1 ");
            n=-n;
        }
        for(i=2;i<=n;i++){
            while(n!=i){
                if(n%i==0){
                    printf("%d ",i);
                    n=n/i;
                }
                else
                    break;
            }
        }
        printf("%d",n);
if(t>0)
printf("\n");
    }
    return 0;
}再试试这个代码,应该是换行的问题。

再问: 学校的系统 没有学校的网进不去...我再试试吧 还有问题就是 提交代码的时候有时候会显示Time Limit Exceeded 或者 Runtime Error 这两个是什么问题呢
再答: Time Limit Exceeded 是指代码运行时间太长,即算法复杂度太高,我们应该优化算法或者换个更快的算法。 Runtime Error是指运行错误,可能是数组越界等等。 我给你了新的代码,你再试试,这个应该能AC。