プログラミング挑戦試合:2・14バレンタイン&元宵節特集:半質数の個数


たまたまCSDNのホームページで高校チャレンジタイトルを発見.一定の挑戦的意義を持っている.初心者が試してみる価値がある.このテーマは以下の通りです.
タイトルの詳細:
質量数はよく知られている概念で、半質量数の概念を定義します.もし1つの数がちょうど2つの質量数の積(同じでもよい)であれば、それを半質量数と呼びます.最初の半質量数は4,6,9,10,14,15,21,22,25,26であった.我々の問題は,2つの正の整数x<=yを入力し,[x,y]の間に何個の半質数があるかを問うことである.
入力:x,y
出力:[x,y]の間に何個の半質量数があるか.
入力データ範囲1<=x<=y<=2000000.
#include 
#include
using namespace std;	

int func(int n)//          
{
	int i;
	if(n==1)
		return 0;
	for(i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)
			return 0;
	}
	return 1;
}
//                 ,      ,          。      a[] 
int calculate(int x, int y,int* a)
{
	int sum =0;
	int i,j;
	for(i=x;iy)
				break;
			else if(i*ja[j])
			{
				tmp=a[i];
				a[i]=a[j];
				a[j]=tmp;
			}
		}
}

int main()
{
	int sum=0;
	int loop;
	int a[500000];
	int x,y;
	do{
		cout << "       [x,y]  (x、y  1 2000000   x   y):";
		cin >> x >> y;
	}while(!(x>=1&&x<=y&&y<=2000000));
	sum=calculate(x,y,a);
	cout << "         " << sum << " " << endl;
	order(a,sum);
	for(loop=0;loop

ここに追加しました
1.半素数を配列に入れる
2.配列内のデータを並べ替えて出力する
挑戦試合のプログラミングは自身の関数定義に厳格な要求があるため、自分のプログラムは要求されたプログラムフォーマットと異なる可能性がある.結果に誤りはないと自認する.
もし間違いがあったら、皆さんに指摘してください.