Re: [討論] fortran期末考第四題
這是給修C++同學看的:
當我聽說Fortran有考質因數分解
嘗試用C++寫
真的他X的有夠難~
我寫出來的程式如下(模仿原PO的語法(!?))
假如祥泰不小心考了
看到就賺到啦XD
#include <iostream>
bool is_prime(int);
int GCF(int x,int y);
using namespace std;
int main()
{
int a,ai,i,j,t=0,x,y;
double **c;
cout<<"請輸入一正整數n:"<<endl;;
cin>>a;
ai=a;
if(a<=0) cout<<"你北七嗎"<<endl;
else {
if(is_prime(a)) {cout<<a<<"是質數"<<endl;
cout<<a<<" = 1 x "<<a<<endl;
}
else {
for(i=1;i<=a;i++) {
if(is_prime(i) && GCF(i,a)!=1) {
cout<<i;
while
(ai%i==0) {ai =ai/i; t++; }
cout<<"^"<<t<<" x ";
}t=0;
}
}cout<<"\b\b";
}
system("pause");
return 0;
}
bool is_prime(int p)
{
int i;
if(p==1) return 0;//1 is not a prime number
else {
for(i=2;i<p;i++) {
if( (p%i)==0 ) return 0; //not a prime number
}
}
return 1;
}
int GCF(int x,int y)
{
int r;
if (x<y) {
r = x;
x = y;
y = r;
}
while (r!=0) {
r = x%y;
x = y;
y = r;
}
return x;
}
※ 引述《jsaon92 (jsaon92)》之銘言:
: program exam_4
: real,dimension(:),allocatable::div
: integer::m,n,i=1
: div=0
: write(*,*)"請輸入一正整數n"
: read(*,*)n
: if(n<=0)then
: write(*,*)"你北七嗎"
: else
: m=n
: allocate(div(m))
: do
: i=i+1
: if(mod(n,i)==0)then
: div(i)=div(i)+1
: n=n/i
: i=1
: endif
: if(n==1)exit
: enddo
: if(sum(div)==1)then
: write(*,*)"n是質數"
: else
: write(*,'(A2)',advance='no')"n="
: do j=2,m
: if(div(j)==1)then
: write(*,'(A1,I0,A1)',advance='no')"(",j,")"
: elseif(div(j)>1)then
: write(*,'(A1,I0,A1,I0,A1)',advance='no')"(",j,"^",int(div(j)),")"
: endif
: enddo
: write(*,*)
: endif
: endif
: end program
: 我是用除了1以外最小的因數一定是質數的想法
: 有人有更好的寫法嗎@@?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.194.227
推
01/08 00:41, , 1F
01/08 00:41, 1F
推
01/08 01:33, , 2F
01/08 01:33, 2F
推
01/08 01:40, , 3F
01/08 01:40, 3F
推
01/09 17:47, , 4F
01/09 17:47, 4F
推
01/09 22:06, , 5F
01/09 22:06, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):