我编写了一个简单的C程序,可以打印几个计算的输出,如下所示。问题是,我看不到具有预期值的输出,似乎输出只能部分看到,我不知道为什么。代码有效,不会发生编译/构建错误。我不确定这是否特定于编译器(我使用 Dev C ++ )或者它是编译器无关的?
当我为小' n'运行代码时如17,29,103 exc。结果显示正确,但一段时间后它开始不打印前几个元素。
对于n = 171,它不显示前24个元素。
我的代码如下;
#include<stdio.h>
#include<stdlib.h>
int mod_exponent(int g,int m, int n);
int main(){
int g,m,n,m1,i,t;
g=2; n=171;
for (m=0;m<=n;m++){
t=mod_exponent(g,m,n);
if(t!=-1)
printf("%d^%d=%d mod %d\n \n", g,m,t,n) ;
}
return 0;
}
int mod_exponent(int g,int m, int n){
int s,r,m1,i,j,k,q,d[100];
if (g<=0||m<0||n<=0){
printf("wrong parameters\n") ;
return -1;
}
m1=m;i=0;
while(m1>=2){
q=m1/2;
d[i]=m1-q*2;
m1=q;
i=i+1;
}
d[i]=m1; k=i;
if(d[0]==1)
r=g;
if(d[0]==0)
r=1;
s=g;
for(i=1;i<k;i++)
s=s*s %n;
if(d[i]==1){
r=r*s%n;
}
return r;
}
输出应如下所示:2 ^ 0 = 1 mod 171,2 ^ 1 = 2 mod 171,... 2 ^ 171 = 167
但它从24开始它看起来像:2 ^ 24 = 85 mod 171,2 ^ 25 = 170 mod171 171,... 2 ^ 171 = 167
答案 0 :(得分:1)
您的代码实际上正在运行,问题是程序的输出刚超过控制台输出的缓冲区。因此,作为一个简单的解决方案,您应该将程序的输出写入文本文件。如果您使用的是Windows,请打开命令行窗口,然后将输出传递给文件(使用>>
运算符)并使用文件编辑器通过文件检查输出(记事本,记事本++ vs。)如下;
假设您编译的可执行文件名是 so.exe ;
C:\Users\Levent\Desktop\so>so >> output.txt
C:\Users\Levent\Desktop\so>output.txt
window key + r
打开命令行窗口并写入cmd
,按enter键。您的代码输出如下;
2^0=1 mod 171
2^1=2 mod 171
2^2=2 mod 171
2^3=4 mod 171
2^4=4 mod 171
2^5=8 mod 171
2^6=4 mod 171
2^7=8 mod 171
2^8=16 mod 171
2^9=32 mod 171
2^10=16 mod 171
2^11=32 mod 171
2^12=16 mod 171
2^13=32 mod 171
2^14=16 mod 171
2^15=32 mod 171
2^16=85 mod 171
2^17=170 mod 171
2^18=85 mod 171
2^19=170 mod 171
2^20=85 mod 171
2^21=170 mod 171
2^22=85 mod 171
2^23=170 mod 171
2^24=85 mod 171
2^25=170 mod 171
2^26=85 mod 171
2^27=170 mod 171
2^28=85 mod 171
2^29=170 mod 171
2^30=85 mod 171
2^31=170 mod 171
2^32=43 mod 171
2^33=86 mod 171
2^34=43 mod 171
2^35=86 mod 171
2^36=43 mod 171
2^37=86 mod 171
2^38=43 mod 171
2^39=86 mod 171
2^40=43 mod 171
2^41=86 mod 171
2^42=43 mod 171
2^43=86 mod 171
2^44=43 mod 171
2^45=86 mod 171
2^46=43 mod 171
2^47=86 mod 171
2^48=43 mod 171
2^49=86 mod 171
2^50=43 mod 171
2^51=86 mod 171
2^52=43 mod 171
2^53=86 mod 171
2^54=43 mod 171
2^55=86 mod 171
2^56=43 mod 171
2^57=86 mod 171
2^58=43 mod 171
2^59=86 mod 171
2^60=43 mod 171
2^61=86 mod 171
2^62=43 mod 171
2^63=86 mod 171
2^64=139 mod 171
2^65=107 mod 171
2^66=139 mod 171
2^67=107 mod 171
2^68=139 mod 171
2^69=107 mod 171
2^70=139 mod 171
2^71=107 mod 171
2^72=139 mod 171
2^73=107 mod 171
2^74=139 mod 171
2^75=107 mod 171
2^76=139 mod 171
2^77=107 mod 171
2^78=139 mod 171
2^79=107 mod 171
2^80=139 mod 171
2^81=107 mod 171
2^82=139 mod 171
2^83=107 mod 171
2^84=139 mod 171
2^85=107 mod 171
2^86=139 mod 171
2^87=107 mod 171
2^88=139 mod 171
2^89=107 mod 171
2^90=139 mod 171
2^91=107 mod 171
2^92=139 mod 171
2^93=107 mod 171
2^94=139 mod 171
2^95=107 mod 171
2^96=139 mod 171
2^97=107 mod 171
2^98=139 mod 171
2^99=107 mod 171
2^100=139 mod 171
2^101=107 mod 171
2^102=139 mod 171
2^103=107 mod 171
2^104=139 mod 171
2^105=107 mod 171
2^106=139 mod 171
2^107=107 mod 171
2^108=139 mod 171
2^109=107 mod 171
2^110=139 mod 171
2^111=107 mod 171
2^112=139 mod 171
2^113=107 mod 171
2^114=139 mod 171
2^115=107 mod 171
2^116=139 mod 171
2^117=107 mod 171
2^118=139 mod 171
2^119=107 mod 171
2^120=139 mod 171
2^121=107 mod 171
2^122=139 mod 171
2^123=107 mod 171
2^124=139 mod 171
2^125=107 mod 171
2^126=139 mod 171
2^127=107 mod 171
2^128=169 mod 171
2^129=167 mod 171
2^130=169 mod 171
2^131=167 mod 171
2^132=169 mod 171
2^133=167 mod 171
2^134=169 mod 171
2^135=167 mod 171
2^136=169 mod 171
2^137=167 mod 171
2^138=169 mod 171
2^139=167 mod 171
2^140=169 mod 171
2^141=167 mod 171
2^142=169 mod 171
2^143=167 mod 171
2^144=169 mod 171
2^145=167 mod 171
2^146=169 mod 171
2^147=167 mod 171
2^148=169 mod 171
2^149=167 mod 171
2^150=169 mod 171
2^151=167 mod 171
2^152=169 mod 171
2^153=167 mod 171
2^154=169 mod 171
2^155=167 mod 171
2^156=169 mod 171
2^157=167 mod 171
2^158=169 mod 171
2^159=167 mod 171
2^160=169 mod 171
2^161=167 mod 171
2^162=169 mod 171
2^163=167 mod 171
2^164=169 mod 171
2^165=167 mod 171
2^166=169 mod 171
2^167=167 mod 171
2^168=169 mod 171
2^169=167 mod 171
2^170=169 mod 171
2^171=167 mod 171